contenu d'analyse syntaxique des balises HTML utilisant l'expression rationnelle
-
18-09-2019 - |
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?
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