1

私の問題は、retrieveName()が$ 1の値を取得していないことですが、前のインスタンスでは$1が正常に機能しています。

    function bbcode ($string)
    {
    // All the default bbcode arrays.
    $bbcode = array(
    '#\[quote=(.*?)\](.*?)\[/quote\]#si' => 
'<span class="bbcode_quote"><b>
<a href="userprofile.php?id='.stripslashes('$1').'" target="_blank">
<span class="fake_link">'.retrieveName('$1').'</span></a> Said:</b><BR/>$2</span><BR/>'

    );
    $output = preg_replace(array_keys($bbcode), array_values($bbcode), $string);
    $output = str_replace("\\r\\n", "<br>", $output);
    return $output;
    }

編集: ストリップスラッシュはありません、私はそれがそれほど単純だったらいいのにと思います

function retrieveName($poster_id){
$get_name = mysql_query("SELECT * FROM users WHERE userid = 'sanitizeIn($poster_id)'")
or die(mysql_error());
$name_row = mysql_fetch_array($get_name);
return $name_row['username'];
}
function sanitizeIn ($string) {
$output = mysql_real_escape_string($string);
return $output;
}
4

2 に答える 2

0

関数を使用していると仮定すると、当然のことながら、代わりに をpreg_*使用する必要があります。どちらも有効ですが、推奨される構文です。$1\\1$1

また、次のいずれかに興味があるかもしれません。

$output = preg_replace("#\[quote=(.*?)\](.*?)\[/quote\]#sie",  
  "'<span class=\"bbcode_quote\"><b><a href=\"userprofile.php?id='.stripslashes('$1').'\"
    target=\"_blank\"><span class=\"fake_link\">'. 
   retrieveName(stripslashes('$1')) . '</span></a> Said:</b><BR/>$2 
  </span><BR/>'",$input);

または:

$output = preg_replace_callback("#\[quote=(.*?)\](.*?)\[/quote\]#si",function($m) {
    return '<span class="bbcode_quote"><b><a href="userprofile.php?id=\\1"  
    target="_blank"><span class="fake_link">' .  
   retrieveName('\\1') . '</span></a> Said:</b><BR/>\\2 
  </span><BR/>';
},$input);
于 2012-07-09T05:10:09.123 に答える
0

この方法を試してください:

$output = preg_replace_callback("#\[quote=(.*?)\](.*?)\[/quote\]#si",function($matches) {
    return '<span class="bbcode_quote"><b><a href="userprofile.php?id='.stripslashes($matches[1]).'" target="_blank"><span class="fake_link">' .  
    retrieveName($matches[1]).'</span></a> Said:</b><BR/>'.$matches[2].'</span><BR/>';
},$input);
于 2012-07-09T05:34:12.667 に答える