正規表現の使用(PHP 5.3+ が必要) :
$string = 'Bla bla %yada yada% bla bla %yada yada%';
echo preg_replace('/%([^%]*)%/', '<a href="http://example.com">$1</a>', $string, 1) . '<br>'; // to replace the first instance.
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
$links = array('http://example.com', 'http://stackoverflow.com', 'http://google.com');
$index = 0;
echo preg_replace_callback('/%([^%]*)%/', function($m) use($links, &$index){
$m[1] = '<a href="'.$links[$index].'">'.$m[1].'</a>';
$index++;
// reset the index if it exceeds (N links - 1)
if($index >= count($links)){
$index = 0;
}
return $m[1];
}, $string).'<br>'; // to replace according to your array
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
// To test with a string that contains more %% than the links
$string2 = 'Bla bla %yada yada% bla bla %yada yada% wuuut dsfsf %yada yada% sjnfsf %yada yada% jnsfds';
$links = array('http://example.com', 'http://stackoverflow.com', 'http://google.com');
$index = 0;
echo preg_replace_callback('/%([^%]*)%/', function($m) use($links, &$index){
$m[1] = '<a href="'.$links[$index].'">'.$m[1].'</a>';
$index++;
// reset the index if it exceeds (N links - 1)
if($index >= count($links)){
$index = 0;
}
return $m[1];
}, $string2).'<br>'; // to replace according to your array
オンラインデモ。