Вопрос

Мне нужно использовать 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'.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top