2010-12-02 6 views
0

J'ai ce lien dans une page HTML.ne peut pas faire un preg_match correctement!

<img id="catImage" width="250" alt="" src="http://dev-server2/image2.png" /> 

Je veux obtenir la valeur de src et je ne reçois pas avec preg_match et tous ces trucs regex. Est-ce vrai?

preg_match(
    "/<img id=\"catImage\" width=\"[0-9]+\" alt=\"\" src=\"([[a-zA-Z0-9]\/-._]*)\"/", 
    $artist_page["content"], $matches); 

Je reçois un tableau vide!

+0

ne pouvez-vous pas utiliser domdocument ou xpath pour cela? – t00ny

Répondre

1

Tout d'abord, la partie de votre regex qui traite de l'attribut src ne tient pas compte du côlon qui apparaît dans l'URL.

Je vous suggère de changer la partie src (et toutes les autres valeurs d'attributs) pour rechercher au lieu de la fin devis et saisir tout entre:

... src = \ "([^ \"] *) \ "....

0
"/<img id=\"catImage\" width=\"[0-9]+\" alt=\"\" src=\"([a-zA-Z0-9/.:_-]*)\"/" 

Doit faire. Notez que j'ai édité la partie [ ... ]. Le trait d'union (-) a une signification spéciale donc je l'ai mis en dernier pour l'ajouter en tant que littéral dans la gamme. En outre, j'ai ajouté le caractère : (merci @ user333699). Cela laisse toutefois entendre que vous ne devriez pas essayer de penser à un caractère d'URL valide. Au lieu de cela, correspondre à quelque chose jusqu'à ce que vous savez que la totalité de la valeur de l'attribut src est adapté:

"/<img id=\"catImage\" width=\"[0-9]+\" alt=\"\" src=\"([^\"]*)\"/" 

à savoir, tout ce qui est pas une citation (").

1

Est-ce que cela fonctionne?

'/<img id="catImage"[^>]+src="([^"]*)"/' 
0

Je suis encore vraiment nouveau sur regex mais je pensais que je jetterais mes pensées là-bas et recevrais des critiques pour cela.Est-ce que l'expression doit être quelque chose comme (?<=(src=")).*(?=["])? (Pas tout à fait formaté PHP, encore Cela permettrait d'obtenir le contenu de l'attribut src

0

Notez que pour obtenir la valeur de src, vous devrez effectuer des additi calcul onal après le preg_match, car votre match va retourner le tag entier.

Il pourrait être intéressant de plonger dans XPath, en fonction de ce que vous voulez vraiment en faire.

Questions connexes