正则表达式,用于查找<character>标记</character>

时间:2009-11-07 23:34:46

标签: php regex

帮助处理所需的正则表达式。我正在尝试使用正则表达式和preg_match_all查找块<character>...</character>。以下是我的数据:

<character>
杜塞尔多夫
杜塞爾多夫
    <div class="hp">dùsàiěrduōfū<div class="hp">dkfjdkfj</div></div>
    <div class="tr"><span class="green"><i>г.</i></span> Duesseldorf (<i>Deutschland</i>)</div>
    <div class="tr"></div>
</character>

<character>
    我, 是谁
    <div class="hp">текст</div>
    <div class="tr">some text in different languages</div>
</character>

我尝试了\<character\>.*\<\/character>,但遗憾的是它没有用。有什么建议吗?

4 个答案:

答案 0 :(得分:5)

除非你需要枪口使用正则表达式来执行此操作,否则DOMDocument将更加准确。

<?php

$dom = new DOMDocument;
$dom->loadXML($data);

$character_nodes = $dom->getElementsByTagName('character');

// use $character_nodes...
?>

答案 1 :(得分:3)

如果使用preg系列函数,则正则表达式应为:

/\<character>(.*?)\<\/character>/s

非贪婪的操作符?将阻止您从第一个<character>开始到最后一个</character>结束一个匹配。/s标志将允许你的点符合换行符。

答案 2 :(得分:2)

尝试

<character>(.*?)<\/character>

问号是一个不合格的限定符,这意味着它会尽可能地缩短字符串。还&lt;和&gt;不需要逃避。

答案 3 :(得分:0)

您可能需要使用“/ u”选项来正确处理UTF8文本。

http://php.net/manual/en/reference.pcre.pattern.modifiers.php