2009-03-11 6 views
0

J'ai une variable contenant une chaîne html. Cette chaîne a ce code particulierSupprimer l'annonce de la chaîne html

<a href="http://www.pheedo.com/click.phdo?s=xxxxxxxx&amp;p=1"><img border="0" src="http://www.pheedo.com/img.phdo?s=xxxxxxxxxx&amp;p=1" style="border: 0pt none ;" alt=""/></a> 

En utilisant regex, comment puis-je supprimer cela. Essentiellement à la recherche du domaine pheedo.com, et en supprimant le lien et l'image tag.

Merci

+0

Je ne sais pas exactement quelle partie de la chaîne vous essayez d'extraire. "www.foobar.com"? –

+0

Il extrait la balise d'ancrage et la balise d'image enfant lorsque le domaine correspond à pheedo.com. –

Répondre

0

Cela devrait correspondre aux balises (écrit en PHP):

$regex = "#<a href=\"http:\/\/www\.pheedo\.com[^>]+><img[^>]+><\/a>#" 
+0

Il n'est pas nécessaire d'échapper les guillemets ou les barres obliques dans regex. Ceci est toujours une exigence du langage hôte, et ne devrait pas être inclus sans le contexte correct. – Tomalak

+0

Merci, cela a parfaitement fonctionné. Cela a bien fonctionné avec PHP, ce que j'aurais dû dire, c'est ce que je recherchais. – jeremib

1

Pour une approche plus générale, (text/html annonces, différentes urls dans le même domaine, etc ...) vous pouvez essayer

<a.*href="[^"]*pheedo.com[^"]*".*</a> 

Remplacez simplement les correspondances que vous trouvez. Gardez à l'esprit que s'il y a un enfant <a/>, vous allez avoir des problèmes.

2

Ceci est un anti-réponse: Ne manipulez pas du HTML arbitraire avec des regex! Le HTML est une spécification vraiment compliquée, l'analyser correctement peut être un cauchemar.

Utilisez une bibliothèque comme phpQuery ou le DOMDocument intégré, ils savent comment gérer toutes les bizarreries du HTML pour vous.

0
$text = '<a href="http://www.pheedo.com/click.phdo?s=xxxxxxxx&amp;p=1"><img border="0" src="http://www.pheedo.com/img.phdo?s=xxxxxxxxxx&amp;p=1" style="border: 0pt none ;" alt=""/></a>'; 
    $reg = "/href=\"(http:\/\/\S+?)\"/i"; 
    preg_match_all($reg, $text, $matches, PREG_PATTERN_ORDER); 

    // $matches[1] should now hold all the domain name "www.pheeedo.com" 

je l'ai fait de cette façon que vous puissiez passer d'une page à l'preg et obtenir tous les résultats correspondants dans un tableau .../

J'ai fait quelques trucs Simular pour rendre cet outil de recherche d'image si tu es intéressé.

http://www.iansimpsonarchitects.com/fraser

Vous pouvez afficher la source complète PHP à partir d'un lien sur la page.

F.

Questions connexes