Oké.. ik vind het eerlijk gezegd een beetje ranzig om gewoon een e-mailadres weer te geven op een forum... Daarom wil ik graag het adres laten veranderen in een plaatje. Maar ik heb liever niet dat men [mail ]adres[ /mail] moet gebruiken. Dus ik dacht aan het volgende:
<?php
$text = preg_replace("([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)",text2email('\\0'),$text);
?>
En die functie die gebruikt wordt:
<?php
function text2email($text)
{
$explode = explode("@",$text);
$return = "<img src=\"createimage.php?user=".$explode[0]."&domain=".$explode[1]."\" border=\"0\" />";
return $return;
}
?>
Waarom de explode?
Ik gebruik verder het script van Sander Draaier: Text naar image. Die heb ik iets veranderd zodat $_GET['user'] en $_GET['domain'] weer om een @ worden gezet (zodat je weer een e-mailadres krijgt).
Dat doe ik omdat een spider anders alsnog het adres ziet staan in de bron (<img src="[email protected]"/>). In mijn geval is dat niet.
Jaja.. de vraag komt er aan! :D
Het probleem is dus dat het niet helemaal werkt.. ;)
Als in die \\0 gewoon laat zien zie ik gewoon het adres, maar als ik hem gebruik in de functie en daar laat ik $text echoën, dan zie ik \0. Volgens mij wordt het in de regel waar de functie wordt aangeroepen (die preg_replace) die \\0 dus niet als echt string doorgegeven.
Hij geeft overigens wél een plaatje weer met deze tekst: [email protected]@ (dus alles is in $_GET['user'] gaan zitten).
Iemand enig idee hoe dat komt, of hoe ik het beter kan gebruiken? Of zit ik opnieuw het wiel uit te vinden en heb ik niet goed gezocht? :D
Oh ja.. ben niet zo'n ster met al die preg_replace, str_replace en eregi.. ;)
Elwin
1.945 views