【问题标题】:Trying to find a string in a XML file with PHP尝试使用 PHP 在 XML 文件中查找字符串
【发布时间】:2015-07-24 15:07:43
【问题描述】:

我有一个已更改为 XML 的 KML 文件,我可以毫无问题地从中输出任何信息。但是我的“描述”标签有一个 CDATA 块,里面有 HTML 代码。 如果“描述”标签包含“一些 HTML 代码”,我会使用 PHP 来回显某些内容。但在我的 XML 文件中,“td”标签(如我所说,位于 CDATA 块中)由两个换行符分隔,因此我的 if 语句不起作用。

我的 PHP:

$a=array();
foreach($xml->Document->Folder->Placemark as $casa) {
    if(strpos($casa->description,'<td>Mob_Reduzi</td>**WHAT TO PUT HERE**<td>0</td>') !== false){
       echo "BLA BLA BLA"
    }
}

我已经尝试过在这些标签之间使用换行符 unicode 的 PHP 代码,但没有任何效果。消除换行符现在不是一个选项,因为有成千上万的行。 提前致谢。

【问题讨论】:

  • "\n"(注意",不适用于')是换行符。但是,您需要完全使用字符串中的内容。如果它来自一个win box,它会是"\r\n"

标签: php xml


【解决方案1】:

根据换行符的类型(通常取决于操作系统),您可以使用以下转义序列之一来表示字符串中的换行符:

  • \n 用于 Unix/OS X
  • \r\nWindows

请注意,这些仅由 PHP 在双引号字符串中解释。因此,考虑到这一点(并假设您在问题中提到的总是有 2 个换行符),您可以将您的检查更改为:

Unix/OS X 换行符:

if(strpos($casa-&gt;description,"&lt;td&gt;Mob_Reduzi&lt;/td&gt;\n\n&lt;td&gt;0&lt;/td&gt;") !== false){

Windows 换行符:

if(strpos($casa-&gt;description,"&lt;td&gt;Mob_Reduzi&lt;/td&gt;\r\n\r\n&lt;td&gt;0&lt;/td&gt;") !== false){

如果换行数可变/不可预测,您最好使用正则表达式:http://php.net/manual/en/function.preg-match.php

【讨论】:

  • 感谢终于成功了,我已经尝试过了,但没有使用正确的引号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
相关资源
最近更新 更多