Ну, вы, конечно, делаете это совершенно по-другому, чем я когда-либо, но я думаю, что кое-что не слишком далеко от того, что вы пытаетесь, может сработать. Попробуйте это:
function textFormat($text) {
$raw = array(
'\'\[text\](?P<id>.*?)\[/text\]\'ise'
);
$out = array (
'\'<a href="index.php?function=getData&reference=text&id=$1">\' . getTextTitle(\'$1\') . \'</a>\''
);
preg_replace($raw, $out, $text);
return $text;
}
function getTextTitle($id) {
$sql = mysql_query("SELECT title FROM text WHERE id = '" . mysql_real_escape_string($id) . "'");
$res = mysql_result($sql);
$row = mysql_fetch_array($res);
return $row ? $row[0] : 'invalid ID';
}
Ваш оригинальный getTextTitle()
будет, если, конечно, не произойдет что-то еще, я позволю кому-нибудь, между прочим, делать все, что ему нравится, с вашей базой данных посредством SQL-инъекции. Не за что.
Кроме того, я не знаю, что это за шум (?P<id>
в регулярном выражении, поэтому я предполагаю, что он необходим по какой-то причине и оставляю его в покое. Я не знаю, правильно ли это.