Hallo,

Ik ken de functi preg_replace() nog niet, maar wat ik ervan gezien heb, lijkt het me heel handig, alleen weet ik niet hoe ie werkt. Is ieman zo sportief om voor mij een tut over preg_replace() te schrijven??

Please...

Jonathan
preg_replace is vooral heel handig als je in één keer een reeks strings wilt vervangen. Onderstaand voorbeeld
<?php
error_reporting (E_ALL);

$search = array ('/1/', '/2/', '/3/', '/4/', '/5/');
$replace = array ('een', 'twee', 'drie', 'vier', 'vijf');
$text = 'Dat weet ik zo 1, 2, 3 niet hoor! 4, 5 ook niet trouwens';
echo preg_replace ($search, $replace, $text);
?>
geeft als output: "Dat weet ik zo een, twee, drie niet hoor! vier, vijf ook niet trouwens"
Wel opletten dat je zogenaamde 'delimiters' opgeeft bij de regexen. Ik gebruik hier de slash.

Een toepassing van dit voorbeeld zou kunnen zijn dat je smiley-codes in een string vervangt door de juiste <img> tags.
Maar je kan het toch ook zo gebruiken (ongeveer):

$tekst = 'Blabla, ik ben Chatman. Ik ben geflipt, gestoord en ben helemaal gek. www.webadres.nl';
preg_replace('www.$i.$x', '<a href="http://www.$i.$x/">$i.$x', $tekst);

Dat je dus een beetje uit een string pakt, en later weer terugplakt? (Ik ben vaag, ik weet het...)
Wat jij wilt weten, heet backreferening. Daarvoor moet je even in het PHP manual kijken bij preg_replace. Ik moet nu op pad :-)
Zo gaat ie goed:
<?php
error_reporting(E_ALL);

$tekst = 'Blabla, ik ben Chatman. Ik ben geflipt, gestoord en ben helemaal gek. www.Webadres.nl';;


$tekst = preg_replace('/www\.(\w+)\.(\w{2,3})/', '<a href="http://www.$1.$2/">$1</a>';, $tekst);


echo $tekst;
?>

\w = een woord karakter
\w+ = 1 of meer woord karakters
\w{2,3} = 2 of 3 woord karakters

Je ziet ook twee keer ( ... ), de inhoud van de eerste komt in $1, de hele match komt in $0.
Okay, thnx.

Reageren