我正在为我的页面构建XML RSS。遇到这个错误:
error on line 39 at column 46: xmlParseEntityRef: no name
显然这是因为我不能拥有&在XML中...我在上一个字段行中做了...
在PHP中清除所有$row['field']'s
的最佳方法是什么,以便&'变成&
答案 0 :(得分:8)
使用htmlspecialchars
仅对HTML特殊字符&
,<
,>
,"
以及可选'
进行编码(请参阅第二个参数) $quote_style
)。
答案 1 :(得分:2)
真的应该看看php中的dom xml函数。它有点工作要弄清楚,但你要避免这样的问题。
答案 2 :(得分:1)
答案 3 :(得分:1)
将保留的XML字符转换为实体
function xml_convert($str, $protect_all = FALSE)
{
$temp = '__TEMP_AMPERSANDS__';
// Replace entities to temporary markers so that
// ampersands won't get messed up
$str = preg_replace("/&#(\d+);/", "$temp\\1;", $str);
if ($protect_all === TRUE)
{
$str = preg_replace("/&(\w+);/", "$temp\\1;", $str);
}
$str = str_replace(array("&","<",">","\"", "'", "-"),
array("&", "<", ">", """, "'", "-"),
$str);
// Decode the temp markers back to entities
$str = preg_replace("/$temp(\d+);/","&#\\1;",$str);
if ($protect_all === TRUE)
{
$str = preg_replace("/$temp(\w+);/","&\\1;", $str);
}
return $str;
}
答案 4 :(得分:0)
使用
html_entity_decode($row['field']);
这将采取并恢复到&amp;来自&amp;如果你有&amp; npsb;它将把它变成一个空间。
http://us.php.net/html_entity_decode
干杯