我需要帮助才能使用以下标记获取XML文件的一部分:
<SomeTag><![CDATA[TEXT I WANT HERE]]></SomeTag>
我一直在玩RexExp,但是无法做到这一点。 你能说出正确的方法吗?
编辑:
对这种特殊情况的XML解析不感兴趣
可以是任何东西,而不仅仅是“SomeTag”。与“我想要的文字”相同。
谢谢。
答案 0 :(得分:2)
使用http://regexp.zug.fr/,我用非常简单的模式写出5秒
preg_match_all("`<!\[CDATA\[(.*?)\]\]>`U", $source, $matches);
答案 1 :(得分:1)
我建议您使用SimpleXML。
答案 2 :(得分:0)
正如其他人建议的那样,为这项工作使用xml解析器。下面的代码将向您展示如何使用正则表达式,但这不是正确的做事方式!
$string = '<SomeTag><![CDATA[TEXT I WANT HERE]]></SomeTag>';
preg_match_all('/<sometag><\!\[CDATA\[(.*)\]\]><\/sometag>/i', $string, $matches);
var_dump($matches);
preg_match_all('/<\!\[CDATA\[(.*)\]\]>/', $string, $matches);
var_dump($matches);
答案 3 :(得分:0)
你甚至不需要RegEx。简单strpos
就足够了:
$start = strpos ($text, '<SomeTag><![CDATA[');
$end = strpos ($text, ']]></SomeTag>', $start);
return substr ($text, $start, $end - $start);