preg_grep en una cadena más grande
Pregunta
Necesito usar preg_reg en alguna cadena con contenido de un archivo html.
$file = file_get_contents($path);
$html_array = explode(' ', $file);
El problema es que la matriz a veces se ve así:
[77]=>
string(35) "<div>
</div>
<br>
{{testto}}
<br>"
He intentado poner algunos espacios en blanco allí ...: P No funcionará ...: / Más adelante haré un preg_grep como este:
$childframes = preg_grep('!\{\{(\w+)\}\}!', $html_array);
$retur = array();
foreach($childframes as $v){
$v = trim($v);
$retur[] = substr($v, 2, -2);
}
return $retur;
Entonces, la idea es básicamente obtener {{testto}}
en una matriz, cada vez que aparezca {{sometext}}
, en la que voy de la subcadena a solo 'en algún momento '.
Gracias =)
EDIT:
Para repetir el problema: explotar no funciona bien, por lo que necesito una expresión regular si es posible, en lugar de solo espacios en blanco ... ¿y hay alguna forma mejor de hacer preg_grep en una cadena grande?
Solución
No es necesario explotar, crear una matriz temporal, grep y despojarla más tarde, solo una expresión regular:
$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];
Otros consejos
No solo quieres usar:
strip_tags($v)
primero para que elimines todas las etiquetas html, luego tu código obtendrá el 'algún momento' correctamente.