我们有一个新闻网站,我正在尝试设置str_replace
,以便将&
从数据库中提取的事件转换为标准友好&
(用户仍然可以看到) &
)
我会在可见网站上输出以下示例:
Changing World". The report
Copper & Gold
而不是预期的空格或&符号。数据是从带有文本字段的mysqldb中提取的。我哪里错了?
我的代码是:
function textfix($text){
$find = array('&', '<br>');
$replace = array('&', '<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" />
答案 0 :(得分:1)
这与
无关,但如果
中有$text
,则会更改为&nbsp;
还告诉我们您在该html代码段的源代码中看到了什么
答案 1 :(得分:1)
我强烈建议您使用htmlentities()
或htmlspecialchars()
函数,而不是尝试转换&符号。
答案 2 :(得分:1)
使用str_replace()
会告诉您的程序无情地隐藏任何&amp;即使在您需要它的地方也可以&
,例如
或其他。
我建议使用preg_replace()
并使用/&[^\w]/
之类的正则表达式来确保您只替换独立的&符号。
使用preg_replace()
您可以正常使用数组,参数与str_replace()
相同,但您应该使用正则表达式作为查找数组的字符串值。
有关详细信息,请参阅the PHP manual。