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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top