2009-10-19 40 views
14

Xin chào tôi muốn sử dụng preg_match trong PHP để phân tích "text mong muốn" ra những điều sau đây từ một tài liệu htmlPreg trận văn bản trong php giữa các thẻ html

<p class="review"> Desired text </p> 

Thông thường tôi sẽ sử dụng simple_html_dom cho những thứ như vậy nhưng trong trường hợp này, nó không thể được sử dụng (phần tử trên không xuất hiện trong mỗi thẻ div mong muốn vì vậy tôi buộc phải sử dụng phương pháp này để theo dõi chính xác khi nó không xuất hiện và sau đó điều chỉnh mảng của tôi từ simple_html_dom tương ứng) .

Dù sao, điều này sẽ giải quyết được sự cố của tôi.

Cảm ơn rất nhiều.

Trả lời

54
preg_match("'<p class=\"review\">(.*?)</p>'si", $source, $match); 
if($match) echo "result=".$match[1]; 
+1

Hoạt động hoàn hảo. Đã lưu tôi vài giờ bạn có ở đó, cảm ơn rất nhiều vì điều đó. –

+1

Bạn được chào đón :) – serg

+0

Điều này không có khả năng vượt quá? Xem câu trả lời của tôi dưới đây. –

6

gì nếu chuỗi bạn đang phù hợp có nhiều dòng và là:

<p class="review"> Desired text1 </p> 
<p class="review"> Desired text2 </p> 
<p class="review"> Desired text3 </p> 

mẫu đó sẽ phù hợp với một lần, và trận đấu sẽ là tất cả mọi thứ trong chuỗi.

Tôi nghĩ rằng một mô hình tốt hơn là:

"'<p class=\"review\">([^<]*)</p>'si" 
+0

vâng, cảm ơn, tôi đã thử nội dung trong 2 giờ qua và cuối cùng tôi đã nhận ra rằng các cổ phiếu đang được hiển thị với JavaScript, sau khi trang đang tải: ((vì vậy, đó là lý do tại sao kịch bản đã không làm việc nhờ tất cả các –

+0

Chắc chắn là câu trả lời đúng. – user1645377

10

nếu bạn muốn quay trở lại nhiều trận đấu sau đó cần phải sử dụng preg_match_all(). Sau đó, bạn lặp qua nhóm kết quả thứ hai ($ match [1]) để chỉ lấy nội dung giữa các thẻ.

$source = "<p class=\"review\"> Desired text1 </p>". 
"<p class=\"review\"> Desired text2 </p>". 
"<p class=\"review\"> Desired text3 </p>"; 


    preg_match_all("'<p class=\"review\">(.*?)</p>'si", $source, $match); 

    foreach($match[1] as $val) 
    { 
     echo $val."<br>"; 


    } 

Outputs: 

Desired text1 
Desired text2 
Desired text3 
Các vấn đề liên quan