Regex per abbinare il contenuto del corpo HTML in PHP
Domanda
Ho bisogno di una regex in php per la corrispondenza tra i tag contenuti di un elemento, ad esempio <body>
e </body>
con la preg_match
compatibile perl.
Finora ho provato con:
// $content is a string with html content
preg_match("/<body(.|\r\n)*\/body>/", $content, $matches);
print_r($matches);
... ma la stampa è un array vuoto.
Soluzione
È sufficiente aggiungere il modificatore s
di avere la partita punto tutti i personaggi, tra cui nuove linee:
preg_match("/<body.*\/body>/s", $content, $matches);
come spiegato nella doc: http: // NL2. php.net/manual/en/reference.pcre.pattern.modifiers.php
Altri suggerimenti
perl regexp partita di default di una riga
è necessario specificare che si desidera fare una ricerca a più linea con l'aggiunta di un s o m dopo l'ultimo /
es:
$> perl -e 'print $1 if "bla\nbla\n<body>\nfirst line\n second line\n</body>\nbla" =~ /^.*<body>(.*)<\/body>.*$/s'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow