Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [php]eregie_replace werkt niet helemaal (https://forum.scholieren.com/showthread.php?t=659681)

Fade of Light 12-11-2003 18:12

[php]eregie_replace werkt niet helemaal
 
allo

edit: vervelend al die spaties ertussen moeten zetten :p

de bedoeling is dus [a]tekst[/ a] om te zetten in <a>tekst</ a> met in de plaats van de a, de u,i of b.

PHP-code:

$text "
[i ]schuin[/ i]
[ u]onderstreept[/ u]
[ b][ i]dikschuin[/ i][/ b]
[ b][ u]dikonder[/ b][/ u]
[ i][ u]schuinonder[/ u][/ i]
[ b][ i][ u]alles[/ u][/ b][/ i]
"
;

    
$text =  eregi_replace ("(\[ b\])(.*)(\[/ b\])""< b>"."\\2"."</ b>"$text);
    
$text =  eregi_replace ("(\[ i\])(.*)(\[/ i\])""< i>\\2</ i>"$text);
    
$text =  eregi_replace ("(\[ u\])(.*)(\[/ u\])""< u>\\2</ u>"$text);
    echo 
$text

uitvoer:
schuin[/ i]
[ u]onderstreept[/ u]
[ b][ i]dikschuin[/ i][/ b]
[ b][ u]dikonder[/ b][/ u]
[ i][ u]schuinonder[/ u][/ i]
[ b][ i][ u]alles


Niet goed dus ;)

[ b]bla[/ b]bla wordt wel blabla
[ b]bla[/ b]bla[ b]bla[ /b] wordt bla[/ b]bla[ b]bla

raar toch? :/

Manuzhai 12-11-2003 20:37

Gebruik de Perl-compatible regular expressions in plaats van POSIX extend (preg_*() ipv ereg_*()), met i en U modifiers. Je kunt sowieso beter de pregs gebruiken, zijn sneller dan de eregs.

eddie 13-11-2003 07:51

Citaat:

Fade of Light schreef op 12-11-2003 @ 19:12:
raar toch? :/
Nee hoor. Je gebruikt een greedy match. Je moet (dus) een non-greedy expressie gebruiken:

PHP-code:

text =  eregi_replace ("([ b])(.*?)([/ b])""< b>"."\2"."</ b>"$text); 

Let op het vraagteken.

Meer info http://nl.php.net/manual/en/pcre.pattern.syntax.php


Alle tijden zijn GMT +1. Het is nu 15:02.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.