看,如果論壇帖子中有$ hide_smilies設置爲1,我不希望:p,:o被替換爲圖片。PHP函數幫助/初學者
這是我輸出的論壇帖子bbcode($message);
和作用如何:
function bbcode($str)
{
$str = htmlentities($str);
$find = array(
"/:p/",
"/:o/",
'/\[b](.*?)\[\/b]/is',
'/\[u](.*?)\[\/u]/is',
'/\[i](.*?)\[\/i]/is'
);
$replace = array(
'<img src="/images/forum/icon_tongue.gif" alt=":p" border="0" height="15" width="15">',
'<img src="/images/forum/icon_embarrassed.gif" alt=":o" border="0" height="15" width="15">'
'<strong>$1</strong>',
'<u>$1</u>',
'<i>$1</i>',
$str = preg_replace($find, $replace, $str);
return nl2br($str);
感謝
編輯
function bbcode($str, $hide_smilies = 0)
{
$str = htmlentities($str);
$find = array(
'/\[b](.*?)\[\/b]/is',
'/\[u](.*?)\[\/u]/is',
'/\[i](.*?)\[\/i]/is',
);
$replace = array(
'<strong>$1</strong>',
'<u>$1</u>',
'<i>$1</i>'
);
if ($hide_smilies == 0)
{
$find[] = "/:p/";
$find[] = "/:o/";
$replace[] = '<img src="/images/forum/icon_tongue.gif" alt=":p" border="0" height="15" width="15">';
$replace[] = '<img src="/images/forum/icon_embarrassed.gif" alt=":o" border="0" height="15" width="15">';
}
$str = preg_replace($find, $replace, $str);
return nl2br($str);
}
這工作,但現在(如果hide_smilies = 0)一些諸如「的字符被替換爲"
等等
「現在這工作,但(如果hide_smilies = 0),如某些字符」獲取與"等取代了」你在非常肯定,當你隱藏的笑臉這只是發生?你調用ヶ輛()功能的頂部,這就是它的作用:http://php.net/manual/en/function.htmlentities.php – 2010-07-14 03:48:21
嗯,我做了第一次我重新加載,也許它沒有重新加載好。 但你怎麼能讓你的輸出安全然後??如果你不能使用htmlentities – Basta 2010-07-14 04:05:53
我並不是建議你不應該使用htmlentities()。基於該代碼,沒有理由,它應該發生只有當hide_smilies = 0。它應該發生在任何情況下這個問題可能是雙重編碼,也就是說,可能是字符串被傳遞了通過htmlentities()[或者具有類似功能的東西]不止一次。我也會確保這個HTML源碼本身沒有問題。 – 2010-07-14 05:06:01