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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top