S Swey Medlem sedan apr. 2000 3 971 inlägg Frågan 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?
------------------
- Swey
Bäst, vackrast, styggast...
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å ;)
------------------
Agent 002 - med rätt att surfa
[Redigerat av Kim den 16 sep 2000]
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. :)
------------------
- Swey
Bäst, vackrast, styggast...
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 :q
------------------
JaktJanne
"Vi är resultatet av vad vi tänker."
- Buddha
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.
------------------
Agent 002 - med rätt att surfa
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).
------------------
Robban < robban@lipogram.com >
[Redigerat av Robban den 17 sep 2000]
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?
------------------
- Swey
Bäst, vackrast, styggast...
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).
------------------
Robban < robban@lipogram.com >