Cette modification devrait alors marcher je pense:
...
function ($matches) use (&$uid) {
return '[img:' . $uid . ']'. $matches[1] . str_replace(' ', '%20', $matches[3]) . '[/img:' . $uid . ']';
},
...
EDIT:
Et en y repensant, celle ci devrait être encore plus simple:
$text = '[img:' . $uid . ']'. preg_replace_callback("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#si",
function($matches) { return $matches[1] . str_replace(' ', '%20',$matches[3]); }, $text) . '[/img:' . $uid . ']';
ou en plus découpé:
$text = preg_replace_callback("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#si",
function($matches) { return $matches[1] . str_replace(' ', '%20',$matches[3]); }, $text);
$text = '[img:' . $uid . ']'. $text . '[/img:' . $uid . ']';
Bref, au lieu de coller les [img:$uid] autour dans l'expression de remplacement, on fait le remplacement d'abord, et on colle les [img:$uid] autour ensuite.
A+,
Message édité par gilou le 21-07-2015 à 23:30:37
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --