Stian_ Skrevet 9. februar 2005 Del Skrevet 9. februar 2005 Har en shoutbox, der jeg skal erstatte div. tagger i $name og $message, koden for replace: $message = preg_replace("/<script(.*)>(.*)<\/script>/i", "<br />", $message); $name = preg_replace("/<script(.*)>(.*)<\/script>/i", "<br />", $name); $message = preg_replace("/<font(.*)>(.*)<\/font>/i", "<br />", $message); $name = preg_replace("/<font(.*)>(.*)<\/font>/i", "", $name); $badTags = array("<p />", "<p/>", "<br>"); $repTags = array("<p></p>", "<p></p>", "<br />"); $message = preg_replace($badTags, $repTags, $message); $name = preg_replace($badTags, "", $name); $allowedTags = '<br><p>'; $message = strip_tags($message, $allowedTags); $name = strip_tags($name, $allowedTags); $remove = array("\r\n\r\n", "\r\n", "<p />"); $replace = array("<p></p>", "<br />", "<p></p>"); $message = str_replace($remove, $replace, $message); $letters = array("Æ", "æ", "Ø", "ø", "Å", "å"); $repLetters = array("Æ", "æ", "Ø", "ø", "Å", "å"); $message = str_replace($letters, $repLetters, $message); $name = str_replace($letters, $repLetters, $name); Så når jeg da poster feks: <script script="java">script java</script> i message, så får jeg output: <br / /> hvorfor det? hvis jeg da legger på en liten del nederst, for å fikse denne feilen: $errorTags = array("<br / />"); $repError = array("<br />"); $message = preg_replace($errorTags, $repError, $message); så får jeg output: <<br />> Post mulige løsninger for å løse dette problemet Link til shoutbox'n Lenke til kommentar
jorgis Skrevet 9. februar 2005 Del Skrevet 9. februar 2005 (endret) Sikker på at du ikke må escape / i <br />? Prøv heller med denne: $message = preg_replace("/<script(.*)>(.*)<\/script>/i", "<br \/>", $message); Endret 9. februar 2005 av jorgis Lenke til kommentar
stiber Skrevet 9. februar 2005 Del Skrevet 9. februar 2005 (endret) Har testet litt på min maskin, og får ikke fram samme problemet. Det skal ikke være nødvendig å escape / i replacement string. Fant ikke noe svar på bugs.php.net heller. Nevner i samme slengen at du bør ha /s modifier på din regex for message: "/<script(.*)>(.*)<\/script>/is" eller litt kortere "<script.*<\/script>/is" ettersom linjeskift i evt. <script> tag vil gjøre at den ikke fåretar replace. Har du prøvd å poste: <scr<font></font>ipt>alert("Funny joke goes here");</script> som navn? Endret 9. februar 2005 av stiber Lenke til kommentar
kakkle Skrevet 9. februar 2005 Del Skrevet 9. februar 2005 (endret) <br> blir til <br /> regner med at dette vil gi ønsket resultat: $message = preg_replace("/<script(.*)>(.*)<\/script>/i", "<br>", $message); $name = preg_replace("/<script(.*)>(.*)<\/script>/i", "<br>", $name); EDIT: Skrev alt på nytt Endret 9. februar 2005 av kakkle Lenke til kommentar
Stian_ Skrevet 10. februar 2005 Forfatter Del Skrevet 10. februar 2005 (endret) Takker kakkle, den funka - selv om det var litt av en omvei først forandre det til en ting, så forandre det igjen - den br-taggen men det funka, da er det greit. Til de andre: testa kun kakkles løsning, men takk for god nok respons. Funker som det skal nå. EDIT: Funka ikke helt nei andre ting fikk en dobbel slash nå, må teste ut litt til Endret 10. februar 2005 av Thurloc Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå