2013-03-07 34 views
5

Tôi làm cách nào để tìm nội dung của div này bằng preg_match <div class="lot-price-block">?preg_match tìm nội dung giữa div cụ thể với lớp

tôi đã làm một cái gì đó như thế này nhưng tôi không thể nhận được gì:

$value=preg_match_all('/<div class=\"lot\-price\-block\">(.*)<\/div>/',$file_contents,$estimates); 
+0

'print_r ($ ước tính) ' – str

+0

Vấn đề là sự trở lại truy vấn không có gì .... Tôi biết làm thế nào để hiển thị nó –

+2

Nguyên tắc đầu tiên của phân tích cú pháp HTML sử dụng regex: [Đừng phân tích cú pháp HTML sử dụng regex] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – SDC

Trả lời

14

Trước hết làm cho regex của bạn ít tham lam hơn bằng cách sử dụng toán tử ?. Điều này sẽ đảm bảo bạn sẽ không nhận được nhiều hơn sau đó bạn nghĩ rằng bạn sẽ nhận được. Điều tiếp theo là /s toán tử ở cuối biểu thức của bạn. Tôi giả sử bạn phân tích cú pháp tệp HTML có nhiều ký tự dòng mới "\n".

$value=preg_match_all('/<div class=\"lot\-price\-block\">(.*?)<\/div>/s',$file_contents,$estimates); 
+0

Điều này hoạt động cảm ơn bạn ;-) –

+0

Vui lòng giúp đỡ –

+0

nhưng cách lấy nội dung từ div tham chiếu như tôi có

Hello how are you
tôi muốn sử dụng preg_match duy nhất không nên lặp lại. bây giờ giải nén chuỗi 'hello how are you' bằng cách sử dụng id và class cả hai. –

0

Hãy thử điều này:

$file_contents = '<div class="lot-price-block">Test content</div>'; 

$value=preg_match_all('/<div\s*class="lot\-price\-block"\s*>(?P<content>.*)<\/div>/',$file_contents,$estimates); 

echo "<pre>"; 
print_r($estimates); 

Bạn sẽ nhận được tất cả các nội dung phù hợp trong print_r($estimates['content']);

+0

Đã chỉnh sửa mã, hãy kiểm tra mã ngay bây giờ –

+0

nhưng cách lấy nội dung từ div tham chiếu như tôi có

Hello how are you
tôi muốn sử dụng preg_match duy nhất không nên lặp lại. bây giờ giải nén chuỗi 'hello how are you' bằng cách sử dụng id và class cả hai. –

Các vấn đề liên quan