2

この関数がユーザーのタグ付けされた ID を返さない理由を説明してもらえますか?

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);

この方法が機能しないのはなぜですか?

4

2 に答える 2

1

結果を php として評価するには、2 番目のパラメーター全体を引用符で囲む必要があります。

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

あなたがしていることは、関数htmlspecialcharsを呼び出し、useridその結果を にフィードすることですpreg_replace

于 2013-03-11T17:38:38.437 に答える
1

preg_replace()使用する代わりにpreg_replace_callback()

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

これにより、置換パラメーターが通常使用される場所に関数を渡すことができます。


mysql_*補足として、非推奨の関数は使用しないでください。代わりに、準備済みステートメントでMySQLi または PDOを使用してください。

于 2013-03-11T17:33:12.947 に答える