转换&到&用于PHP中的XML

时间:2009-07-15 17:01:43

标签: php xml

我正在为我的页面构建XML RSS。遇到这个错误:

error on line 39 at column 46: xmlParseEntityRef: no name

显然这是因为我不能拥有&在XML中...我在上一个字段行中做了...

在PHP中清除所有$row['field']'s的最佳方法是什么,以便&'变成&

5 个答案:

答案 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("&amp;", "&lt;", "&gt;", "&quot;", "&apos;", "&#45;"),
                        $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

干杯