preg_grep auf einem größeren String
Frage
Ich brauche auf einigen String mit Inhalt aus einer HTML-Datei verwenden preg_reg.
$file = file_get_contents($path);
$html_array = explode(' ', $file);
Das Problem ist, dass das Array manchmal so aussieht:
[77]=>
string(35) "<div>
</div>
<br>
{{testto}}
<br>"
Ich habe versucht, in einigen Whitespaces dort zu setzen ..: P Werde nicht funktionieren ..: / Später werde ich ein preg_grep wie folgt tun:
$childframes = preg_grep('!\{\{(\w+)\}\}!', $html_array);
$retur = array();
foreach($childframes as $v){
$v = trim($v);
$retur[] = substr($v, 2, -2);
}
return $retur;
So ist die Idee im Grunde {{testto}}
in einem Array zu erhalten ist, wo jedes Auftreten von {{sometext}}
ich es String nur down ‚sometext‘.
Danke =)
EDIT:
Um das Problem zu wiederholen: Explosion ist nicht richtig so arbeiten ich brauche etwas regex möglich, wenn statt nur Leerzeichen .., und gibt es eine bessere Möglichkeit, preg_grep auf eine große Zeichenfolge zu tun
Lösung
Keine Notwendigkeit, zu explodieren, ein temporäres Array erstellen, grep es und es später abzustreifen, nur ein regexp Spiel:
$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];
Andere Tipps
Wollen Sie nicht nur verwenden:
strip_tags($v)
zuerst, so dass Sie alle HTML-Tags entfernen, dann Code wird das ‚sometext‘ bekommen richtig.