我的問題是retrieveName()沒有獲得$ 1的值,但$ 1在前面的實例中工作得很好。排列中的PHP函數
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;
}
可能需要雙轉義,轉換爲「\\\\ 1」,取決於retrieveName()中完成多少級別的處理 – 2012-07-09 04:44:38
執行所有通過的變量編輯retrieveName以\\開頭?如果他們這樣做,爲什麼不傳遞整數值(1),然後在retrieveName函數內附加'\\'? – nbsp 2012-07-09 04:45:21
看裏面'retrieveName'使用可能使用'stripslashes' – Rab 2012-07-09 04:50:32