preg_grep em uma corda maior
Pergunta
Eu preciso usar preg_reg em algum string com o conteúdo de um arquivo HTML.
$file = file_get_contents($path);
$html_array = explode(' ', $file);
O problema é que a matriz parece às vezes como isto:
[77]=>
string(35) "<div>
</div>
<br>
{{testto}}
<br>"
Eu tentei colocar em alguns espaços em branco lá ..: P não vai funcionar ..: / Mais tarde vou fazer uma preg_grep assim:
$childframes = preg_grep('!\{\{(\w+)\}\}!', $html_array);
$retur = array();
foreach($childframes as $v){
$v = trim($v);
$retur[] = substr($v, 2, -2);
}
return $retur;
Assim, a idéia é, basicamente, para obter {{testto}}
em uma matriz, cada ocorrência de {{sometext}}
onde eu substring lo para baixo para apenas 'sometext'.
Graças =)
EDIT:
Para repetir o problema: explodir não está funcionando direito, então eu preciso de algum regex, se possível, em vez de apenas espaços em branco .., e há alguma maneira melhor de fazer preg_grep sobre em uma grande cadeia
?Solução
Não há necessidade de explodir, criar uma matriz temporária, grep-lo e tira-lo mais tarde, apenas um jogo regexp:
$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];
Outras dicas
Você não quer apenas usar:
strip_tags($v)
primeiro, para que você está removendo todas as tags de html, então o seu código irá obter o 'sometext' corretamente.