PHP - 从字符串中删除XML标记

时间:2018-05-02 15:04:44

标签: php xml string plsql

我将从Oracle DB查询的字符串值转换为PHP字符串,并使用XML,如下所示:

<?xml version='1.0' encoding='UTF-8'?><root available-locales="en_US" default-locale="en_US"><Title language-id="en_US">Batman</Title></root>
<?xml version='1.0' encoding='UTF-8'?><root available-locales="en_US" default-locale="en_US"><Title language-id="en_US">Wonder Woman</Title></root>
<?xml version='1.0' encoding='UTF-8'?><root available-locales="en_US" default-locale="en_US"><Title language-id="en_US">Fantastic Four</Title></root>

我需要从字符串中删除XML,只需要标题,如下所示:

Batman
Wonder Woman
Fantastic Four

最好的方法是什么?

我打算尝试使用substr,但意识到我不知道结尾字符是什么,因为每个标题都不同。我也尝试过strip_tags但是没有用。

谢谢!

2 个答案:

答案 0 :(得分:0)

使用preg_replace并在id="en_US"></Title>之间捕获字符串作为替代者

<?php

$xml = <<<EOF
<?xml version='1.0' encoding='UTF-8'?><root available-locales="en_US" default-locale="en_US"><Title language-id="en_US">Batman</Title></root>
<?xml version='1.0' encoding='UTF-8'?><root available-locales="en_US" default-locale="en_US"><Title language-id="en_US">Wonder Woman</Title></root>
<?xml version='1.0' encoding='UTF-8'?><root available-locales="en_US" default-locale="en_US"><Title language-id="en_US">Fantastic Four</Title></root>
EOF;

$title = preg_replace('#.*id="en_US">(.*?)<.*#', '$1', $xml);
print $title;

答案 1 :(得分:0)

您可以使用simplexml_load_string。这将返回SimpleXMLElement,你可以从中Title属性:

$strXml = <<<XML
<?xml version='1.0' encoding='UTF-8'?><root available-locales="en_US" default-locale="en_US"><Title language-id="en_US">Wonder Woman</Title></root>
XML;

$simpleXmlElement = simplexml_load_string($strXml);
$title = (string)$simpleXmlElement->Title;
echo $title;

DOMDocument

$doc = new DOMDocument();
$doc->loadXML($strXml);
echo $doc->getElementsByTagName("Title")[0]->nodeValue;

那会给你:

  

神奇女侠