PDA

View Full Version : Reg-uttryck


Swey
2000-07-15, 03:49
Tjo

Jag vill översätta html-taggar från [b], [kod] osv.. till dess HTML-motsvarighet.

Detta fungerar
$str = eregi_replace( '(\[[b]\])(.+)(\[/b\])', '<b>\2</b>', $str );

men kan man inte slå in allting i samma uttryck på något sätt?

Ungefär som detta
$str = eregi_replace( '(\[)([b|i|u])(\])(.+)(\[\2)(\])', '<\2>\4</\2>', $str );

Men detta fungerar inte. \2 kan tydligen inte användas i söksträngen (markerat blått). Vad göra?

Har använt ' istället för " för göra koden mer lättläst

Danke!


------------------
*- Swey
Projekt wF (http://php.webforum.nu/project/forum/) PHP (http://php.webforum.nu)


[Redigerat av Swey den 15 jul 2000]

petergrennanet
2000-07-20, 16:02
Ar inte du en sys admin till WebForum.
I sa fall sa borde du har tillgong till Source'en till detta forum.
Leta dar.

------------------
peterbe.com (http://www.peterbe.com)

emission
2000-07-20, 16:49
Nej, UBB söker upp varje tagg för sig (gjorde det sist jag kollade, i alla fall).

I princip är det möjligt, men det är svårt att beskriva att sluttaggen ska vara samma som starttaggen.

------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB

[Redigerat av emission den 20 jul 2000]

Swey
2000-07-20, 17:05
varför är det svårt?

------------------
&nbsp;- Swey
Projekt wF (http://php.webforum.nu/project/forum/) PHP (http://php.webforum.nu)

emission
2000-07-20, 17:53
Därför att jag inte kan komma på hur det funkar i PHP. Det är lätt i Perl. Tillåt mig klura en stund...Klart man kan använda perlstyle regexp förstås...

I Perl kan man t.ex. köra


$str =~ s#\[(i|b)\](.+?)(\[/\1\])#<$1>$2</$1>#gis;

Swey
2000-07-20, 17:56
men hur löser man det med preg_replace?

------------------
&nbsp;- Swey
Projekt wF (http://php.webforum.nu/project/forum/) PHP (http://php.webforum.nu)

emission
2000-07-20, 18:23
Så här:

$str = preg_replace("/\[(i|b|u)\](.+)\[\/\\1\]/", "<\\1>\\2</\\1>", $str );



------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB