2011-07-31 14 views
9

Tüm içeriğin tamamını regex ile <body> etiketinin içine nasıl alabilirim? Örneğin Tüm içeriğin regex ile `<body>` etiketinin içine nasıl girebilirim?

,

<html><body><p><a href="#">xx</a></p> 

<p><a href="#">xx</a></p></body></html> 

Bu sadece dönmek istiyorum,

<p><a href="#">xx</a></p> 

<p><a href="#">xx</a></p> 

Ya da başka daha iyi bir fikir? belki DOM ama

HTML Purifier

bunu kullanmamaya karar böylece kullanmak için bir acıdır ... o zaman doctype ve body etiketi dönecektir saveHTML(); kullanmak zorunda. Regex'in felaketim için bir sonraki en iyi seçenek olabileceğini düşündüm.

+0

Bunun gibi bir regex içeriği olur? – sahid

+1

Bu gönderiye bir bakın http://stackoverflow.com/questions/3577641/best-methods-to-parse-html-with-php/3577662#3577662 –

+0

@sahid - hayır, ne hakkında, ' ... ' –

cevap

20
preg_match("/<body[^>]*>(.*?)<\/body>/is", $html, $matches); 

$matches[1] (. *) `sizin için` çalışmıyor gövde etiketinin

+0

'gibi basittir. – laukok

+1

Geçerli (!) HTML örneklerine bakın: http://stackoverflow.com/questions/701166/can-you-provide-some-examples-of-why-it-is-hard-to-parse-xml-and- html-with-a-rege/702222 # 702222 ve düzenli bir ifadeyle nasıl başarısız olduğunuzu görün. – Shi

+0

büyük flambino !! – JAF

1
preg_match("~<body.*?>(.*?)<\/body>~is", $html, $match); 
print_r($match); 
İlgili konular