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

?
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top