webForumDet fria alternativet

eregi_replace()-problem

PHP

1 svar · 201 visningar · startad av bgust

Medlem sedan mars 2000136 inlägg
Frågan#1

Jag använder eregi_replace för att ersätta taggar av typen:
[röd]röd färg[/röd] med html, men det uppstår problem om man använder dubbla taggar i eftersom den då byter ut första start-taggen och sista sluttaggen så resultatet av [röd]röd färg[/röd]inte röd[röd]röd färg[/röd] blir:
röd färg[/röd]inte röd[röd]röd färg
(och rött alltihop)

min kod ser ftf ut så här:
eregi_replace("\[röd\]([\x01-\x7F,å,ä,ö,Å,Ä,Ö]{1,})\[\/röd\]","<font color=\"#FF0000\">\\1</font>",$input);

Alltså frågan: Hur får man ereg att ersätta första(bästa) matchande mönster?

[Redigerat av bgust den 04 nov 2000]

Medlem sedan feb. 20001 050 inlägg
#2

Hejsan,

Om du använder preg_replace istället så kan du använda ? för att göra matchningen "ogirig".

<?
$input="[röd]röd färg[/röd]inte röd[röd]röd\nfärg[/röd]";
$ut=preg_replace("/\[röd\]([\x01-\x7FåäöÅÄÖ]+?)\[\/röd\]/im","<font color=\"#FF0000\">\\1</font>",$input);
echo "$ut\n";
?>
"i" ger "case insensitive" och "m" ger "multiline matching".

/nicclas - http://www.nyhetsrubriker.com

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