2009-08-17 9 views
0

Je suis en train de lire contient une page HTML pour plus de détails, je suis à la recherche de chaque occurrence d'une chaîne, cette chaîne est livré avec un tag, je veux lire seulement cette chaîne.PHP Regex correspondre à toutes les balises HTML

Exemple:

<a href="http://www.example.com/search?la=en&q=javascript">javascript</a> 
<a href="http://www.example.com/search?la=en&q=PHP">PHP</a> 

Je veux juste lire toutes les occurrences des balises texte sur la base de href tag qui doit contenir ce (http://www.example.com/search?la=en&q=).

Une idée?

Répondre

4

SimpleHtmlDom exemple (est-ce pas assez?):

// Create DOM from URL or file 
$html = file_get_html('http://www.google.com/'); 

// Find all links 
foreach($html->find('a') as $element) { 
     echo $element->href . '<br>'; 
     echo $element->text; //this is what you want 
} 
0

Si la page HTML que vous lisez est très régulière (par exemple, généré machine selon les modèles prévisibles), quelque chose comme cela travail:

preg_match('|<a\s+href="http://www.example.com/search\?la=en&q=(\w+)"\s*>\1</a>|', $page) 

Mais si cela devient plus compliqué que cela, les expressions régulières ne seront probablement pas assez pour le travail - vous seriez mieux d'utiliser un analyseur HTML complet pour extraire les liens et les vérifier un -by-one pour trouver le texte que vous voulez.

+0

Je crois que vous devriez échapper aux points dans l'url? http: // www \ .exemple \ .com / –

Questions connexes