Functie gebruiken binnen preg_replace
Code (php)
1
2
3
2
3
<?php
$inhoud = preg_replace('/\[url=(.+?)\]\[\/url\]/is','<a target="_new" href="$1">'.substr('$2', 0, 35).'...</a>', $inhoud);
?>
$inhoud = preg_replace('/\[url=(.+?)\]\[\/url\]/is','<a target="_new" href="$1">'.substr('$2', 0, 35).'...</a>', $inhoud);
?>
Hoi,
Weet iemand wat ik mis doe? alles werkt perfect behalve de substr...
alvast bedankt !
Met anderen woorden, $2 wordt door subst() als een gewone string gezien en pas de output van substr() wordt door de preg_replace() geinterpreteerd.
Dat dit het geval is kun je zien door substr('$2', 0, 1) te gebruiken. Je ziet dat dan alleen $ weergegeven wordt.
Conclusie:
Code (php)
1
[ u r l = http://www.google.be]www.goooooooooooooooooooooooooooooooooooooooooooooooooooooooooooogle.be[/ u r l]
Alvast bedankt !
Gewijzigd op 01/01/1970 01:00:00 door Christophe Rogiers
Je zou bijvoorbeeld eerst de benodigde gegevens met preg_match_all() in een array kunnen zetten en vervolgens die gegevens weer aan elkaar plakken.
Je moet gewoon zorgen dat je alleen de eerste 35 caracters matched. Dus:
(.{1,35})
Ik heb 'm niet getest, maar volgens mij werkt dit gewoon.
Code (php)
1
2
3
2
3
<?php
$inhoud = preg_replace('/\[url=(.+?)\](.{1,35}).+?\[\/url\]/is','<a target="_new" href="$1">'.substr('$2', 0, 35).'...</a>', $inhoud);
?>
$inhoud = preg_replace('/\[url=(.+?)\](.{1,35}).+?\[\/url\]/is','<a target="_new" href="$1">'.substr('$2', 0, 35).'...</a>', $inhoud);
?>
Gewijzigd op 01/01/1970 01:00:00 door Arend a
Het script van Arend werkt bijna...
Hij geeft de "e" van be niet weer van http://www.test.be maakt hij http://www.test.b
Code (php)
1
2
3
2
3
$inhoud = preg_replace("!(^|[ \n\r\t])((http(s?)://|www\.|http(s?)://'www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)!","\\1[url=\\2]\\2[/url]",$inhoud);
$inhoud = preg_replace('/\[url=(.+?)\]\[\/url\]/is','[url=$1]$1[/url]', $inhoud);
$inhoud = preg_replace('/\[url=(.+?)\](.{1,35}).+?\[\/url\]/is','<a target="_new" href="$1">$2</a>', $inhoud);
$inhoud = preg_replace('/\[url=(.+?)\]\[\/url\]/is','[url=$1]$1[/url]', $inhoud);
$inhoud = preg_replace('/\[url=(.+?)\](.{1,35}).+?\[\/url\]/is','<a target="_new" href="$1">$2</a>', $inhoud);
Ik zou ook drie puntjes willen laten zien als een link is afgebroken. Zoiets als dit: http://www.phphulp.nl/foru...=1&pid=35039&replies
alvast bedankt !
Gewijzigd op 01/01/1970 01:00:00 door Christophe Rogiers