Ach, und wenn Du [[bla]blub] oder [[bla]] matchen willst, dann halt so (und zwar ohne Arrays):
PHP-Code:
<?php
$str = '[bla[blubb]]
[[blo]]';
echo preg_replace_callback('%[[(.+)](.*)]%Us', 'make_a_link', $str);
function make_a_link($matches){
if(empty($matches[2]))
return '<a href="' . rawurlencode(html_entity_decode($matches[1])) . '">' . $matches[1] . '</a>';
else
return '<a href="' . rawurlencode(html_entity_decode($matches[1])) . '">' . $matches[2] . '</a>';
}
?>
Ausserdem ist meine Methode schneller (bei größeren Datenmengen ca. doppelt so schnell). :-)