Domanda

Devo usare preg_reg su una stringa con contenuto da un file html.

$file = file_get_contents($path);
$html_array = explode(' ', $file);

Il problema è che l'array a volte appare così:

[77]=>
    string(35) "<div>
</div>
<br>
{{testto}}
<br>"

Ho provato a inserire alcuni spazi bianchi lì ..: P Non funzionerà ..: / Più avanti farò un preg_grep in questo modo:

$childframes = preg_grep('!\{\{(\w+)\}\}!', $html_array);
$retur = array();
foreach($childframes as $v){
   $v = trim($v);
   $retur[] = substr($v, 2, -2);
}
return $retur;

Quindi l'idea è fondamentalmente di ottenere {{testto}} in un array, ogni ricorrenza di {{sometext}} in cui lo sottostringo solo in 'sometext '.

Grazie =)

Modifica

Per ripetere il problema: esplodere non funziona correttamente, quindi ho bisogno di regex, se possibile, invece di spazi bianchi .., e c'è un modo migliore per eseguire preg_grep su una stringa di grandi dimensioni?

È stato utile?

Soluzione

Non c'è bisogno di esplodere, creare un array temporaneo, grep e rimuoverlo in seguito, solo una corrispondenza regexp:

$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];

Altri suggerimenti

Non vuoi solo usare:

strip_tags($v)

prima in modo da rimuovere tutti i tag html, quindi il tuo codice otterrà correttamente il 'sometext'.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top