preg_grep на большей строке - PullRequest
       24

preg_grep на большей строке

0 голосов
/ 26 ноября 2009

Мне нужно использовать preg_reg для некоторой строки с содержимым из файла html.

$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".

Спасибо =)

EDIT:

Чтобы повторить проблему: explode не работает правильно, поэтому мне нужно некоторое регулярное выражение, если это возможно, а не просто пробел ..., и есть ли лучший способ сделать preg_grep для большой строки?

Ответы [ 2 ]

1 голос
/ 27 ноября 2009

Нет необходимости взрываться, создавать временный массив, grep и удалять его позже, просто соответствие регулярному выражению:

$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];
0 голосов
/ 26 ноября 2009

Разве вы не хотите просто использовать:

strip_tags($v)

сначала, чтобы вы удалили все html-теги, затем ваш код получит корректный текст sometext.

...