Re.: simplexml_load_file parser error with ampersands in urls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Yes, an unescaped ampersand is not allowed in XML, including the attributes. See the exaplanation and examples here: https://www.w3resource.com/xml/prohibited-character-literals.php

You can also use XML validation tools to see if your sample XMLs are valid, e.g.: https://www.xmlvalidation.com/

Regards,
Janis


No: Dennis Nezic <dennisn@xxxxxxxxxxxxxxxx>
Nosūtīts: svētdiena, 2022. gada 5. jūnijs 04:52
Kam: php-general@xxxxxxxxxxxxx <php-general@xxxxxxxxxxxxx>
Tēma: simplexml_load_file parser error with ampersands in urls
 
If there are ampersands (&) in links within tags (eg. href= ""> rel=) simplexml_load_file() fails with

  parser error : EntityRef: expecting ';'

This useful comment in the manual suggests str_replace()'ing it with
the &amp; entity:

  https://www.php.net/manual/en/function.simplexml-load-file.php#117566

%26 url encoding also works, although no other character that
I'm aware of seems to cause this parser error / requires
urlencode()'ing.

But this seems like a bug, or something that simplexml_load_file should
be able to handle? Or does xml or something not allow &'s in tag
properties?

For example, trying to load this file:

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <entry>
    <link href="" href="http://example.com/bla.php?yes&no">http://example.com/bla.php?yes&no" />
  </entry>
</feed>

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux