S Swey Medlem sedan apr. 2000 3 971 inlägg Trådstart 15 sep. 2000 23:56 #1 Hej,
Hur kan man på ett enkelt sätt med reguljära uttryck filtrera bort vissa HTML-taggar och ersätta med < respektive >?
Om jag vill tillåta <b> och <i> ska alla andra ersättas med <någonting>.
Går detta att lösa på ett enkelt och snabbt sätt?
Kim Medlem sedan jan. 2000 7 697 inlägg Kanske inte det smidigaste men borde du inte kunna göra så här?
$content = str_replace ( "<" , "<" , $content );
$content = str_replace ( ">" , ">" , $content );
$content = str_replace ( "<b>" , "<b>;" , $content );
Är som sagt absolut inte det smidigaste, men du får väl tänka själv också
S Swey Medlem sedan apr. 2000 3 971 inlägg Jo, men jag tänkte om det gick att lösa med reguljära uttryck på ett smidigt sätt. Är inte så bra på just det.
Vet ej om detta går men i Notepad har du funktionen *Replace..* eller något sådant. Kam du inte göra det där
Kim Medlem sedan jan. 2000 7 697 inlägg Han vill nog att det ska göras automatiskt på inlägg från t.ex. en gästbok. Detta för att man inte ska kunna lägga in exempelvis en H1-tagg och förstora texten enormt.
R Robban Medlem sedan dec. 1999 2 555 inlägg Om $str innehåller strängen som skall filtreras:
$str = preg_replace("#<((?!(/?b>|/?i> )).*?)>#i", "<\\1>", $str);
(Observera att webForums script stoppar in ett mellanslag mellan ?i> och ) - det skall inte vara där).
S Swey Medlem sedan apr. 2000 3 971 inlägg Tack, Robban... det fungerade fint!
Men nu verkar det som om <b> eller <i> påverkar all text efteråt. Det spelar ingen roll om <i> står i en egen cell.
Går det att fixa så att sluttag krävs på nått sätt?
R Robban Medlem sedan dec. 1999 2 555 inlägg Nu börjar vi komma in på områden där en parser skulle fungera bättre. Men prova följande (inte fullt testat):
$patterns = array("#<((?!(/?b>|/?i> )).*?)>#i", "#<(b|i)>(?!.*?</\\1> )#i");
$replacements = array("<\\1>", "<\\1>");
$str = preg_replace($patterns, $replacements, $str);
(Samma sak här - forumscriptet petar in ett mellanslag mellan > och ) som måste tas bort för att det skall fungera).