Jag tänkte tillåta att man skriver viss html-kod i gästböker och dylikt. För att ha lite kontroll på det hela så började jag med att koda allt med htmlentities.
Min tanke är att sedan ersätta t.ex. <B> med <B>. Dessutom vill jag att de avslutar den korrekt. Detta har jag lyckat lösa med följande regexp:
$retStr = eregi_replace("<(B)>(.*)</(B)>","<\\1>\\2</\\3>",$retStr);
Kanske inte jättesnyggt men det fungerar.
Nu till första frågan: Jag vill ange flera taggar i samma regexp men vill att den ska avslutas korrekt, dvs jag vill att <B>text</B> och <I>text</I> ska tillåtas men inte <B>text</I>.
Detta skulle jag vilja göra ungefär så här men det fungerar inte eftersom \\1 bara fungerar i ersättningstexten.
$retStr = eregi_replace("<(B|I)>(.*)</(\\1)>","<\\1>\\2</\\3>",$retStr);
Några förslag på hur man löser det.
Nästa problem: Jag vill kunna tillåta <UL><LI>Text</LI><LI>Text</LI><UL>.
Problemet om jag använder ovanstående konstruktion är att * är glupsk och sväller så mycket som mycket. Resultatet av (.*) blir därför Text</LI><LI>Text istället för bara Text. I Perl skriver man (.*?) tror jag men det fungerar inte. Det stod någonting om (U?) i manualen men jag fattade inte.
Tacksam för svar.
Det blev lite konstigt eftersom webforum tydligen gjorde om & mot & men jag tror ni förstår vad jag menar.
spangoMedlem sedan juni 20008 205 inlägg Det första problemet har jag ingen aning om, men däremot det andra. Kolla in http://www.php.net/manual/ref.pcre.php
Jag vet inte om det hjälper men jag tror att det borde göra det. Särskilt Pattern syntax.
------------------
Ta dig i dalen och gör mig till spango
Jag såg att det stod någonting om ungreedy i pattern syntax men jag förstod inte hur jag skulle skriva.
spangoMedlem sedan juni 20008 205 inlägg Precis som i Perl, verkar det...
preg_replace("/([[i]ett mönster...[/i]]*?)/", "det vi ska byta regexp:en med, med eventuella bakåtreferenser som \\1 och \\2", "den sträng vi ska byta ut saker i");
\r Parse error
------------------
Ta dig i dalen och gör mig till spango
[Redigerat av spango den 07 jan 2001]
Näpp, så är det inte. Jag försökte så först men det resulterar i
Warning: REG_BADRPT:"repetition-operator operand invalid in include/functions.php on line 310
nanneMedlem sedan dec. 19991 749 inlägg Om jag har förstått dig rätt så vill du att vissa taggar ska fungera men inte alla?
Isf så skriv bara.
$retStr = strip_tags("<b><i><ul><li>",$retStr);
------------------
"Där ser du. De är synthare och inte scientologer..."
nanne.net