2010-09-16 9 views
0

Comment puis-je créer un modèle regex preg_match_all pour PHP pour me donner ce code?PHP preg_match_all html

<td class="class2">&nbsp;</td> 
<td class="class2" align="right"><span class="DarkText">I WANT THIS TEXT</span></td> 

Pour obtenir le texte dans la classe span? merci!

+0

Est-ce la seule classe d'étendue dans la chaîne de texte? – NullUserException

+2

xpath est beaucoup mieux adapté à cette tâche. –

+1

S'il vous plaît ne pas utiliser regexes pour analyser HTML. C'est un chemin vers le chagrin et le code brisé. –

Répondre

7

Vous pouvez utiliser:

preg_match_all("!<span[^>]+>(.*?)</span>!", $str, $matches); 

, votre texte à l'intérieur du premier groupe de capture (comme on le voit sur rubular)

Avec cela de la manière, notez que regex shouldn't be used to parse HTML. Vous feriez mieux d'utiliser un analyseur XML, à moins que ce soit quelque chose de vraiment, vraiment simple.

+0

+1 pour la réponse et pointant vers la meilleure solution (analyseur). Et pour avoir inclus le lien vers la fameuse réponse de Bobince. – alex

1

Il est difficile d'écrire des expressions rationnelles qui analysent parfaitement le HTML. Au lieu de cela, utilisez un analyseur HTML comme celui-ci: http://simplehtmldom.sourceforge.net/. Il est facile à utiliser et je l'ai recommandé ici plusieurs fois.