Se siete alla ricerca di (ad esempio) un tag annidati h2
all'interno di un tagtd
dove c'è solo spazi bianchi tra i due, basta usare \s
che comprende spazi, a capo, ecc esempio ::
preg_match('#<td>\s*<h2>(.*?)</h2>\s*</td>#i',$str,$matches);
// result is in $matches[1]
Guardalo in azione here.
Per il vostro interesse, here è un elenco di diversi modificatori che è possibile passare alle funzioni preg_*
. Bandiere che potrebbero interessarti sono:
s
("dotall"): questo rende .
partita ogni personaggio, tra cui capo. Quindi, dì che il tuo <h2>.....</h2>
è stato distribuito su più righe. Allora dovreste fare
preg_match('#<td>\s*<h2>(.*?)</h2>\s*</td>#is',$str,$matches);
in modo da avere le .*
andare su più righe (vedi l'extra s
alla fine della regex?).
m
("multilinea"): questo uno appena lascia ^
e $
partita di inizio/fine della linea anziché solo l'inizio/fine della stringa di . Ne hai davvero bisogno solo se stai usando ^
e $
nel tuo pattern e vuoi che corrispondano all'inizio/fine di ogni singola riga nel tuo input.
fonte
2012-01-22 04:38:44
dispiace avrei dovuto essere più specifico. Il problema è nella mancanza di "identificatori" nel codice HTML con cui ho a che fare. Possono esserci altri tag h2 e altri. Quindi sto cercando di utilizzare i tag circostanti per indirizzare esattamente questo particolare punto nel codice. Quindi, come posso far sì che i pattern di espressioni regolari comprendano le multiline? ... –