Regex pour correspondre le contenu du corps HTML en PHP
Question
J'ai besoin d'une expression rationnelle en php pour le contenu correspondant entre les balises d'un élément, par exemple <body>
et </body>
avec le perl preg_match
compatible.
Jusqu'à présent, j'ai essayé avec:
// $content is a string with html content
preg_match("/<body(.|\r\n)*\/body>/", $content, $matches);
print_r($matches);
... mais l'impression est un tableau vide.
La solution
Il vous suffit d'ajouter le modificateur de s
avoir le match de points tous les personnages, y compris les nouvelles lignes:
preg_match("/<body.*\/body>/s", $content, $matches);
comme expliqué dans la doc: http: // NL2. php.net/manual/en/reference.pcre.pattern.modifiers.php
Autres conseils
Match perl regexp par défaut une ligne
vous devez spécifier que vous voulez faire une recherche de plusieurs lignes en ajoutant un s ou m après le dernier /
ex:
$> perl -e 'print $1 if "bla\nbla\n<body>\nfirst line\n second line\n</body>\nbla" =~ /^.*<body>(.*)<\/body>.*$/s'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow