【问题标题】:Escaping single quotes while parsing XML file (RSS)解析 XML 文件 (RSS) 时转义单引号
【发布时间】:2023-03-21 18:21:02
【问题描述】:

我有一个要解析的 XML 文件 .. 我没有生成 XML .. 我在解析文件时遇到了问题 ... 有一个节点有 ' 单引号 .. 这会产生错误。 .

我在使用simplexml_load_file() 时尝试使用addslashes()htmlentities(),但没有任何反应!! .. 有没有办法解决这个问题并用引号解析文件??

Warning: simplexml_load_file() [function.simplexml-load-file]: THE URL:853: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE2 0x20 0x20 0x6C in /****/parseXML.php on line 7

【问题讨论】:

  • 您是否编写了自己的解析器例程?还是您使用的是 PHP 的内置解析器或某些 3rd 方库?
  • 我正在使用 PHP 中存在的simplexml_load_file() .. 然后我从中提取数据..

标签: php xml parsing xml-parsing


【解决方案1】:

听起来您遇到了编码问题。单引号可能不是键盘上的单引号字符,而是由单词按压程序生成的更高级的字符。结果很可能是您的输入文件不是 UTF-8,而是另一个多字节字符集。

您要么需要使用文本编辑器将编码转换为完全 UTF-8,要么使用 PHP 的 iconv 将文件的编码(可能是 ISO-8859-1)转换为 UTF-8 编码然后用simplexml_load_string加载它。

【讨论】:

  • 好吧,正如我所说,我不是 XML 的创建者,但我只是加载和解析它.. 那么有没有办法从我这边做到这一点?
  • 当你说你没有创建它时,我没有意识到你的意思是你没有对它的写访问权,而是它是一个远程 URL。在这种情况下,用cURLfile_get_contents(url) 加载URL,用iconv 转换编码,然后用simplexml_load_string 加载。这一切都将在内存中完成,无需访问物理文件。
  • 我厌倦了 file_get_contents 之后 iconv 从 ASCII 到 UTF-8,但我又遇到了一个错误!! Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl"
  • 您需要使用simplexml_load_string() 而不是simplexml_load_file()
  • 不工作!!还有其他读取XML文件的方法吗?!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 2019-02-18
  • 2015-10-16
  • 1970-01-01
  • 2020-02-19
  • 2021-06-23
  • 2022-01-22
相关资源
最近更新 更多