preg_grep для строки большего размера
Вопрос
Мне нужно использовать 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'.
Спасибо =)
Редактировать:
Чтобы повторить проблему:explode работает неправильно, поэтому мне нужно какое-нибудь регулярное выражение, если это возможно, вместо просто пробела .., и есть ли какой-нибудь лучший способ выполнить preg_grep on для большой строки?
Решение
Не нужно взрываться, создавать временный массив, grep его и удалять позже, просто совпадение регулярных выражений:
$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];
Другие советы
Разве ты просто не хочешь использовать:
strip_tags($v)
сначала, чтобы вы удалили все html-теги, тогда ваш код правильно получит 'sometext'.