我将从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但是没有用。
谢谢!
答案 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;
$doc = new DOMDocument();
$doc->loadXML($strXml);
echo $doc->getElementsByTagName("Title")[0]->nodeValue;
那会给你:
神奇女侠