user315396 user315396 - 8 months ago 21
PHP Question

How to skip invalid characters in XML file using PHP

I'm trying to parse an XML file using PHP, but I get an error message:

parser error : Char 0x0 out of allowed range in

I think it's because of the content of the XML, I think there is a speical symbol "☆", any ideas what I can do to fix it?

I also get:

parser error : Premature end of data in tag item line

What might be causing that error?

I'm using


I try to find the error line and paste its content as single xml file and it can work!! so I still cannot figure out what makes xml file parse fails. PS it's a huge xml file over 100M, will it makes parse error?


Do you have control over the XML? If so, ensure the data is enclosed in <![CDATA[ .. ]]> blocks.

And you also need to clear the invalid characters:

 * Removes invalid XML
 * @access public
 * @param string $value
 * @return string
function stripInvalidXml($value)
    $ret = "";
    if (empty($value)) 
        return $ret;

    $length = strlen($value);
    for ($i=0; $i < $length; $i++)
        $current = ord($value{$i});
        if (($current == 0x9) ||
            ($current == 0xA) ||
            ($current == 0xD) ||
            (($current >= 0x20) && ($current <= 0xD7FF)) ||
            (($current >= 0xE000) && ($current <= 0xFFFD)) ||
            (($current >= 0x10000) && ($current <= 0x10FFFF)))
            $ret .= chr($current);
            $ret .= " ";
    return $ret;