Question

Je veux analyser le contenu de

<td>content</td>
and
<td *?*>content</td>
and 
<td *specific td class*>content</td>

Comment puis-je faire cela avec regex, php et match preg?

Était-ce utile?

La solution

Je pense que cette le résume assez bien.

En bref, ne pas utiliser des expressions régulières pour analyser HTML. Au lieu de cela, regardez les classes DOM et en particulier DOMDocument :: loadHTML

Autres conseils

Si vous avez un document HTML, vous devriez vraiment pas utiliser des expressions régulières pour l'analyser. HTML est tout simplement pas assez « normal » pour que

Une bien meilleure solution serait de charger votre document HTML en utilisant un analyseur DOM - par exemple, DOMDocument::loadHTML et href="http://php.net/manual/en/domxpath.query.php" rel="nofollow noreferrer"> requêtes XPath souvent faire un très grand travail!

<td>content</td>: <td>([^<]*)</td>

<td *specific td class*>content</td>: <td[^>]*class=\"specific_class\"[^>]*>([^<]*)<

@OP, voici une façon

$str = <<<A
<td>content</td>
<td *?*>content</td>
<td *specific td class*>content</td>
<td *?*> multiline
content </td>
A;

$s = explode("</td>",$str);
foreach ($s as $a=>$b){
    $b=preg_replace("/.*<td.*>/","",$b);
    print $b."\n";
}

output

$ php test.php
content

content

content

 multiline
content
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top