webForumDet fria alternativet

Samma tag två gånger krånglar till det

Webbutveckling

3 svar · 493 visningar · startad av Ledel

Medlem sedan dec. 2004736 inlägg
Frågan#1

Hej, är inte helt hemma på RegExp längre så jag söker mig hjälp hos er!
Har följande kod i PHP:

#\{quote=(.*?)\}(.*?)\{/quote\}#s

för att replacea {quote=Namn}Lite text{/quote}

Detta fungerar bra, men om någon citerar ett inlägg med citat blir det:
{quote=Namn}{quote=Namn2}Lite annan text{/quote}Lite text{/quote}
Vilken gör att det inte blir helt rätt då den börjar vid "Namn"s start, men slutar vid "Namn 2s slut". Någon som har något lösning på det här problemet?

(Alla { och } är egentligen [ och ], men wF gillade inte det ;) )

Medlem sedan dec. 2004736 inlägg
#2

Okej, koden ovan blir:
<div>Namn skrev:<br /><div>text</div></div>
Jag löste det genom att enbart RegExp'a {quote=(.*?)\} och sen replacea {quote} med </div></div>.
Funkar bra än så länge..

Medlem sedan juli 20011 084 inlägg
#3

Nackdelen är ju att dina besökare kan starta taggar som de inte avslutar, vilket kanske kan leda till grafiska problem. t.ex. om de bara skriver "{/quote}"

Och varför inte använda <blockquote> istället för en div?

Medlem sedan juni 20008 205 inlägg
#4

Det går i det generella fallet inte att validera rekursiva strukturer med regexpar. Om du verkligen är bekymrad över om huruvida folk kommer att stoppa in överflödiga start- eller stopptaggar måste du parsa upp texten i en trädstruktur för att kolla (och ev. rätta till) obalanserade taggar. Om du inte är bekymrad över den möjligheten, kör som du gör nu.

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)