Avatar billede mc.lucifer Praktikant
10. august 2005 - 10:06 Der er 11 kommentarer og
1 løsning

nl2br Fungere på text men ikke på kode

Jeg har en side hvor jeg henter hele hovedeindholdet ind gennem en Mysql database, det sker på følgende måde

$database = mysql_connect("localhost", "User", "Password");
mysql_select_db("Database", $database);
$product = mysql_query("select * from sitetext where Id = '$Site'");
$result= mysql_fetch_assoc($product);
eval("?>". $str = nl2br($result['Text']));

Problemet er bare at når jeg exekvere siden med ovenstående kode er typografien rigtig nok på ren html men siden fejler hvis der ligger noget php i database.

Parse error: parse error in E:\Side\t\index.php(198) : eval()'d code on line 1

Fjerner jeg nl2br så køre siden igen med php tags i databasen, men den viser så alm text helt uden nogen form for typografi,

Findes der en måde at sammenkæde Eval og nl2br på ?

MC
Avatar billede jakobdo Ekspert
10. august 2005 - 10:38 #1
Problemet er jo, at php kode, som f.eks.:
<?
echo "Hej";
?>
efter at have været igennem nl2br, vil se sådan her ud:
<?<br>echo "Hej";<br>?>
Hvilket jo ikke er valid php kode.
Har du ikke mulighed for at køre din HTML kode igennem nl2br inden du smider det i databasen?
Avatar billede mc.lucifer Praktikant
10. august 2005 - 10:52 #2
Tjooo måske, jeg er jo bare sprunget over hvor gæret er lavest, iom at jeg i det her scenarie har tastet textens ind i ohomyadmin

MC
Avatar billede jakobdo Ekspert
10. august 2005 - 11:00 #3
Ellers skal du ud og lave noget slamkode, hvor du tager alt <? ... ?> ud og resten smider du igennem nl2br().
Det må kunne lave med noget regexp...
Giv mig lige et par minutter, sidder lige med noget andet.
Avatar billede mc.lucifer Praktikant
10. august 2005 - 11:01 #4
ok, Jeg venter, MEGET gerne

MC
Avatar billede jakobdo Ekspert
10. august 2005 - 11:36 #5
preg_match_all('/<\\?.*?\\?>/s', $input, $output);
Dette finder alle php-tags og indholdet.
Resten skal så lige laves en anden regexp til! :o)
Avatar billede jakobdo Ekspert
10. august 2005 - 11:55 #6
Denne er jeg ikke helt tilfreds med, men...
preg_match_all('/<[^?].*?<\\?/s', $input, $output);
(den fanger html mellem <? og ?> tags...
Men har du f.eks. </html> til sidst, så fejler den... :o(
Og har ikke tid til at kigge mere på det lige nu!
Avatar billede mc.lucifer Praktikant
10. august 2005 - 12:12 #7
ok, Jeg takker mange gange

svare du lige

MC
Avatar billede ksoren Nybegynder
10. august 2005 - 12:18 #8
http://www.eksperten.dk/spm/638209 kan også bruges til formålet
Avatar billede jakobdo Ekspert
10. august 2005 - 13:05 #9
Svar
Avatar billede jakobdo Ekspert
21. september 2005 - 10:18 #10
Takker for point!
Avatar billede mc.lucifer Praktikant
21. september 2005 - 10:19 #11
he he fandt lige ud af du ikke havde fået for denne her

MC
Avatar billede jakobdo Ekspert
21. september 2005 - 10:21 #12
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester