2009-11-26 12 views
0

J'ai besoin d'utiliser preg_reg sur certaines chaînes avec le contenu d'un fichier html.preg_grep sur une chaîne plus grande

$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é de mettre dans certains .. il espacements: P Ne fonctionne pas ..:/Par la suite je vais faire 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; 

l'idée est essentiellement de se {{testto}} dans un tableau, toutes les occurrences de {{sometext}} où je substring vers le bas seulement « someText ».

Merci =)

EDIT:

Pour répéter le problème: exploserai ne fonctionne pas correctement si j'ai besoin regex si possible, au lieu d'espaces .., et est-il une meilleure façon faire preg_grep sur une grande chaîne?

+0

ce que vous essayez de faire exactement? guarantie il y a un moyen plus facile de le faire. – Galen

Répondre

1

Pas besoin d'exploser, de créer un tableau temporaire, grep et dépouiller plus tard, juste un match de regexp:

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

wow! sympa: D c'était tellement mieux, merci =) – Johannes

0

Ne vous voulez juste utiliser:

strip_tags($v) 

d'abord pour que vous supprimez toutes les balises html, votre code obtenir le « someText » correctement.

+0

jamais vu cette fonction, merci :) – Johannes