Het onderwerp zegt het al een beetje...
Ik heb een preg_replace die [ url] en [/ url] vervangt door een URL adres. Alleen als je iets yahoo achtigs hebt of iets phphulp.nl/voorbeeld/simpelgastenboek/gastenboek.php iets, dan is dit een heel erg langggg url adres.. Dit wil ik gaan afkappen door:
<?
function geturl($url)
{
if (strlen($url) > 50)
$short = substr($url, 0, 23) . "...." . substr($url, -23);
else
$short = $url;
return "<a href=\"" . $url . "\">" . $short . "</a>";
}
function parsetekst($text)
{
$text = eregi_replace("\\[url\\]www.([^\\[]*)\\[/url\\]", geturl('\\1'), $text);
}
$msg = "Hallo [ url]http://www.erglangurladresdieikwilafkappennamaximaal50karakterswantditsuckt/[/ url]";
$msg = parsetekst($msg);
?>
Nu het probleem:
strlen($url) geeft telkens maar: 3 aan. Ik denk dat dit komt door: \\1 die hij zo letterlijk pak, maar hij returned $url wel goed na de functie.. Dus als ik het parse dan toont hij het goed, maar als ik het in de functie geturl() parse zegt hij 3! Ik weet dus bijna zeker dat het komt omdat hij \\1 pakt ipv wat \\1 echt is, in dit geval dus een lang url adres..
de code bovenstaand heb ik trouwens net zelf ff snel getypt dus kan foutje in zitten, mara het gaat om het idee :)
921 views