У меня вот такой вот заработал..
<?php
$text = '..///.....[aaa/bb/cc].....[dddddd/aaaa]...//......';
$text = preg_replace_callback('/(\[[^\]]+\])/', create_function('$matches', 'return str_replace("/", "|", $matches[0]);'), $text);
echo $text;
?>
присвоил результат замены в переменную $text, а то она выводила то что было вначале o:-) плюс php заявил что модификатор
Warning: preg_replace_callback() [function.preg-replace-callback]: Unknown modifier 'g'
ps: большое спасибо....