用于此模式的PHP中的RegEx

时间:2011-03-24 11:02:05

标签: php regex

我需要帮助才能使用以下标记获取XML文件的一部分:

<SomeTag><![CDATA[TEXT I WANT HERE]]></SomeTag>

我一直在玩RexExp,但是无法做到这一点。 你能说出正确的方法吗?

编辑:
对这种特殊情况的XML解析不感兴趣  可以是任何东西,而不仅仅是“SomeTag”。与“我想要的文字”相同。

谢谢。

4 个答案:

答案 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);