2010-10-18 6 views
0

J'essaie d'extraire la valeur src de la balise image en utilisant prag_match avec le modèle perl. Je ne sais pas où je me trompe, mais je reçois aussi des parties non désirées. Voici comment mon modèle ressemble -preg_match_all expression

preg_match_all('#src="http.+"#',$imagetag,$temp); 

$imagetag = "<img src="http://....." alt="build4.jpg" title="build4.jpg" width="320" height="240" />" 

au lieu de retourner une partie src = "...", je reçois l'ensemble des attributs - src = ".." alt = ".." title = ». . "width =" .. "height =" .. "; quelque chose ne va pas avec mon patten. J'apprécierais beaucoup si quelqu'un peut signaler l'erreur.

+0

Erm, je ne pense pas que ce soit Perl ... qui ressemble plus à PHP. Avec regex compatible Perl. – BoltClock

+0

S'il vous plaît envisager d'utiliser un analyseur DOM approprié plutôt qu'un grattoir basé sur regexp pour analyser HTML. –

+0

@Bolt: Désolé ma mauvaise. C'est php avec regex compatible perl. @Noufal: cela rendrait-il mon script plus lent à cause des frais généraux que j'ai besoin de créer un objet et de passer le tag? Parce que je n'ai besoin de travailler que sur 4 tags. – Andrew

Répondre

4

Vous devez faire votre motif non gourmand en utilisant .+? en place de .+ comme:

preg_match_all('#src="http.+?"#',$imagetag,$temp); 
+0

Merci beaucoup, ça marche. Si cela ne vous dérange pas de demander, comment ajouter? changer le résultat entier? Je veux dire, je pensais que encadrer. + Entre guillemets restreindrait le résultat de retour à ceux avec src = "alphanumérique/symbole", il me semble qu'il considère la guillemande fermante du dernier attribut comme une correspondance entre guillemets de mon modèle et considère tout le reste des attributs correspond au motif. – Andrew