2010-07-17 6 views
0

s'il vous plaît voir le code:Expression régulière pour analyser html

$result = "<b>Associated Names</b>&nbsp;&nbsp;[<a href='http://www.examples.com/authors.html?act=change&id=6141&item=associated'><u>Edit</u></a>]</td> 
     </tr> 
     <tr> 
      <td class='text' align='left'>G&#12539;R<br />G-R<br />   </td>" 

preg_match_all("/<b>Associated Names.{10,100}<td class='text' align='left'>((.*<br \/>)*).*<\/td>/sU", $result, $assoc); 
var_dump($assoc); 
----------------------------------------------------------- 
RESULT 
array 
    0 => 
    array 
     0 => string '<b>Associated Names</b></td> 
     </tr> 
     <tr> 
      <td class='text' align='left'>G&#12539;R<br />G-R<br />   </td>' (length=135) 
    1 => 
    array 
     0 => string '' (length=0) 
    2 => 
    array 
     0 => string '' (length=0) 

Je veux revenir

array(
    1 => 
    array 
     0 => string 'G&#12539;R', 
    2 => 
    array 
     0 => string> 'G-R' 
) 

il est une question de parenthèses (. ()) je veux fixer, s'il vous plaît aider moi

+0

Qu'est-ce que vous correspondant à votre regex contre? – quantumSoup

+0

Il est préférable de ne pas utiliser d'expressions régulières pour analyser HTML. Essayez un analyseur HTML à la place. –

+2

Pouvons-nous avoir un message sur la page "Poser une question" pour dire aux utilisateurs de ne pas essayer d'analyser HTML avec des regex? –

Répondre

3

S'il vous plaît ne pas essayer d'analyser HTML avec des expressions régulières, il invokes the wrath of Zalgo. Essayez d'utiliser the DOM et xpath pour cibler les éléments et attributs spécifiques que vous tentez d'extraire.

(je vous donner un exemple de XPath, mais il est toujours sur ma liste à apprendre ... :))

+0

merci pour les conseils – meotimdihia

+0

Malheureusement, c'est parfois le seul moyen, car toutes les pages ne sont pas bien formatées. Plusieurs fois, Zend Dom Query n'a pas réussi à créer la dom correctement et j'ai obtenu de mauvais résultats. Pas une faute du cadre bien sûr, mais l'analyse peut devenir désordonnée. J'utilise les deux approches, ad hoc. – johnjohn

+0

@john, avez-vous essayé d'exécuter la page via [tidy] (http://us2.php.net/manual/fr/book.tidy.php) en premier? – Charles

Questions connexes