2013-03-11 5 views
2

может кто-нибудь объяснить мне, почему эта функция не возвращает идентификатор пользователя с тегами?Preg_Replace с функцией не работает

function userid($name){ 
    $a_sql = mysql_query("SELECT * FROM utenti WHERE tag='$name' ") or die(mysql_error()); 
    $a_id= mysql_result($a_sql ,0,"id"); 
    return $a_id; 
    } 

$text= $_POST["text"]; 
$text = preg_replace('/@([a-zA-Z0-9]+)/e', htmlspecialchars(userid('$1')), $text); 

Почему этот метод не работает?

+0

Что такое '(userid ('$ 1')'? – powtac

ответ

1

Вместо использования preg_replace() использования preg_replace_callback()

http://php.net/manual/en/function.preg-replace-callback.php

Это позволяет передать функцию, где замена параметр обычно идет.


В качестве примечания, пожалуйста, не используйте устаревшие mysql_* функции. Используйте вместо этого MySQLi or PDO.

1

Вам нужно цитировать весь второй параметр для оценки результата, как PHP:

$text = preg_replace('/@([a-zA-Z0-9]+)/e', 'htmlspecialchars(userid($1))', $text); 

То, что вы делаете, является вызов функции htmlspecialchars и userid и подкормка результата, что preg_replace.

+1

ok perfect: D Большое вам спасибо – user2156006

Смежные вопросы