preg_grep在一个更大的字符串上

时间:2009-11-26 20:34:11

标签: php regex grep pcre

我需要在一些带有html文件内容的字符串上使用preg_reg。

$file = file_get_contents($path);
$html_array = explode(' ', $file);

问题是数组看起来有时像这样:

[77]=>
    string(35) "<div>
</div>
<br>
{{testto}}
<br>"

我试图在那里放一些空格..:P无法工作..:/稍后我会像这样做一个preg_grep:

$childframes = preg_grep('!\{\{(\w+)\}\}!', $html_array);
$retur = array();
foreach($childframes as $v){
   $v = trim($v);
   $retur[] = substr($v, 2, -2);
}
return $retur;

所以这个想法基本上是在数组中得到{{testto}},每次出现{{sometext}},我把它归结为只有'sometext'。

谢谢=)

修改

要重复这个问题:爆炸无法正常工作,所以我需要一些正则表达式,如果可能的话,而不仅仅是空格...,是否有更好的方法在大字符串上执行preg_grep?

2 个答案:

答案 0 :(得分:1)

不需要爆炸,创建一个临时数组,grep它并在以后删除它,只是一个正则表达式匹配:

$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];

答案 1 :(得分:0)

你不想只使用:

strip_tags($v)

首先要删除所有的html标签,然后你的代码才会正确地获得'sometext'。