PHP正则表达式多行字符串的一部分

时间:2013-12-13 23:24:44

标签: php regex dom multiline

我希望在正则表达式中有一部分多行

<?php
 function bloggerLoop ( $matches ) { print_r ( $matches ) ; }

 $theme = preg_replace_callback(
         "#<b:loop values='data:(.*)' var='(.*)'>(.*?)</b:loop>#i",
         "bloggerLoop", 
         $theme 
         );
?>

这就是我所拥有的,但b:loop在模板中不止一次,这个正则表达式会跳过所有循环并创建一个“大”循环,但我只需要一个“部分”。

有什么需要:

<b:loop values='data:x' var='x'>MULTILINE</b:loop>

需要解析的文件是:http://pastebin.com/a3g3G1uE

我希望你能帮助我使用正则表达式。

坦克。

-Wesley

1 个答案:

答案 0 :(得分:1)

正则表达式不是这个的工具。对于基本的Regex,HTML标记结构太复杂了,您应该尝试一些HTML DOM库(如PHP Simple HTML DOM Parser)来进行HTML DOM工作。

$html = file_get_html('http://pastebin.com/raw.php?i=a3g3G1uE');
foreach($html->find('b:loop') as $element)
       echo $element->values. '<br>';

查看我的example了解您的具体案例,并阅读documentation