preg_grep sur une plus grande chaîne
Question
Je dois utiliser preg_reg sur une chaîne contenant le contenu d'un fichier HTML.
$file = file_get_contents($path);
$html_array = explode(' ', $file);
Le problème est que le tableau ressemble parfois à ceci:
[77]=>
string(35) "<div>
</div>
<br>
{{testto}}
<br>"
J'ai essayé d'y mettre quelques espaces ..: P ça ne marchera pas ..: / Plus tard, je ferai un preg_grep comme ceci:
$childframes = preg_grep('!\{\{(\w+)\}\}!', $html_array);
$retur = array();
foreach($childframes as $v){
$v = trim($v);
$retur[] = substr($v, 2, -2);
}
return $retur;
Donc, l’idée est essentiellement d’obtenir {{testto}}
dans un tableau, chaque occurrence de {{sometext}}
où je la sous-chaine en "sometext" '.
Merci =)
EDIT:
Pour répéter le problème: explose ne fonctionne pas correctement, donc il me faut si possible des regex, au lieu de juste des espaces .., et y at-il un meilleur moyen de faire preg_grep sur une grande chaîne?
La solution
Pas besoin d'exploser, de créer un tableau temporaire, de le grep et de le supprimer plus tard, juste une correspondance d'expression rationnelle:
$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];
Autres conseils
Ne voulez-vous pas simplement utiliser:
strip_tags($v)
d'abord afin de supprimer toutes les balises HTML, votre code obtiendra le 'sometext' correctement.