使用str_replace转换&符号

时间:2011-07-14 11:53:57

标签: php xhtml

我们有一个新闻网站,我正在尝试设置str_replace,以便将&从数据库中提取的事件转换为标准友好&(用户仍然可以看到) &

我会在可见网站上输出以下示例:

Changing World".  The report
Copper & Gold

而不是预期的空格或&符号。数据是从带有文本字段的mysqldb中提取的。我哪里错了?

我的代码是:

function textfix($text){
    $find = array('&', '<br>');
    $replace = array('&amp;', '<br />');
    $newtext = str_replace($find, $replace, $text);
    return $newtext;
}

html的东西是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

3 个答案:

答案 0 :(得分:1)

这与&nbsp;无关,但如果&nbsp;中有$text,则会更改为&amp;nbsp;

还告诉我们您在该html代码段的源代码中看到了什么

答案 1 :(得分:1)

我强烈建议您使用htmlentities()htmlspecialchars()函数,而不是尝试转换&符号。

答案 2 :(得分:1)

使用str_replace()会告诉您的程序无情地隐藏任何&amp;即使在您需要它的地方也可以&amp;,例如&nbsp;或其他。

我建议使用preg_replace()并使用/&[^\w]/之类的正则表达式来确保您只替换独立的&符号。

使用preg_replace()您可以正常使用数组,参数与str_replace()相同,但您应该使用正则表达式作为查找数组的字符串值。

有关详细信息,请参阅the PHP manual