【问题标题】:How convert CDATA xml with more single and double quote in a string php?如何在字符串php中使用更多单引号和双引号转换CDATA xml?
【发布时间】:2017-08-10 16:17:35
【问题描述】:

对不起,愚蠢的问题...

我在文件 xml 中有一个 CDATA 子节点:

  <placemark>
   <description><![CDATA[ <h2>ML 2.1 - GREATER LOS ANGELES' AREA, CALIF.</h2><br><b>2016-09-29   16:10:00.3 UTC</b><br /><br /><table style="width:100%;"><tr><td><b>Latitude</b></td><td style="padding-left:5px;">  34.13 N<br></td></tr><tr><td><b>Longitude</b></td><td style="padding-left:5px;">  119.14 W<br></td></tr><tr><td><b>Deph</b></td><td style="padding-left:5px;">  20   Km<br></td></tr><tr><td><b>Magnitude</b></td><td style="padding-left:5px;">  ML 2.1<br></td></tr></table><br /><br /><a href="http://www.emsc-csem.org/Earthquake/earthquake.php?id=534164"> Link to the event </a> ]]></description>
  </placemark>

我得到 CDATA 但我不知道如何在字符串 php 中转换它

如何添加用于 CDATA 反斜杠转义 \ 的 for' ? 这种方式比容易...只要写

  $file= simplexml_load_file(FILE);
  $CDATA = $file -> placemark -> description;
  $string= "'".$CDATA."'"

我希望你能帮助我,对不起我的英语,非常感谢你的建议!

【问题讨论】:

  • 什么是$CDATA?你用什么来解析 XML?请发布您用于从 XML 中获取 CDATA 的代码的 minimal but complete 版本..
  • @har07 我编辑了解释什么是 $CDATA .... 但问题是如果里面有很多单引号和双引号,它在字符串中的隐蔽程度
  • 好吧,现在很清楚$CDATA 是什么了。接下来,您当前的代码有什么问题?您认为 CDATA 中的 ' 是如何造成任何问题的?
  • @har07 自己试试... print $string 会发现它不是字符串。如果在 $CDATA 的开头和结尾添加双引号,结果相同。问题是很多单引号和双引号..
  • 这就是我们需要minimal reproducible example的原因,这样我们就可以尝试一下……就像this one。但正如您在链接的演示中看到的那样,结果是字符串。你是怎么得出你的不是字符串的结论的?

标签: php xml cdata


【解决方案1】:

文字是您在源代码中编写值的方式。在$foo = "abc"; 中,"abc" 是字符串文字。

$file-&gt;placemark-&gt;descriptionSimpleXMLElement 的一个实例,可以转换为字符串。

这是一个显式转换的示例:
$string = (string)$file-&gt;placemark-&gt;description;

但它可以是隐式的,比如在字符串上下文中使用它:
echo $file-&gt;placemark-&gt;description;

我不确定您为什么要为其添加引号。如果您尝试将字符串输出到 JavaScript,您应该尝试json_encode()

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多