2010-09-02 36 views
43

thể trùng lặp:
Best methods to parse HTMLPHP Parse HTML code

Làm thế nào tôi có thể phân tích cú pháp HTML code được tổ chức tại một biến PHP nếu nó cái gì đó như:

<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG! 

Tôi muốn đến chỉ nhận được văn bản nằm giữa các tiêu đề và tôi hiểu rằng bạn không nên sử dụng Cụm từ thông dụng.

+4

@everyone người đóng cửa này trùng lặp. Điều này khác vì OP không muốn văn bản 'T1, T2, T3' nhưng văn bản sau một tiêu đề kết thúc và trước khi bắt đầu nhóm tiếp theo. ví dụ. 'Lorem ipsum.'. Vì vậy, * điều này * là khác nhau. Xin vui lòng xem qua. – shamittomar

Trả lời

105

Sử dụng PHP Document Object Model:

<?php 
    $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG'; 
    $DOM = new DOMDocument; 
    $DOM->loadHTML($str); 

    //get all H1 
    $items = $DOM->getElementsByTagName('h1'); 

    //display all H1 text 
    for ($i = 0; $i < $items->length; $i++) 
     echo $items->item($i)->nodeValue . "<br/>"; 
?> 

này kết quả đầu ra như:

T1 
T2 
T3 

[EDIT]: Sau khi OP Làm rõ:

Nếu bạn muốn các nội dung như Lorem ipsum. vv, bạn có thể trực tiếp sử dụng regex này:

<?php 
    $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG'; 
    echo preg_replace("#<h1.*?>.*?</h1>#", "", $str); 
?> 

này kết quả đầu ra:

Lorem ipsum.The nhanh fox màu đỏ ...... nhảy qua FROG nâu lười biếng

+0

Cảm ơn nhưng tôi cần lấy văn bản giữa

như sau: "Lorem ipsum", "Con cáo màu đỏ nhanh ..." v.v. Vì vậy, không phải văn bản giữa các thẻ H1, mà là văn bản giữa một kết thúc và bắt đầu từ

. – Francisc

+0

@Francisc, tôi đã cập nhật câu trả lời. – shamittomar

+0

Đó là gần hơn, cảm ơn bạn. Tôi sẽ cố gắng rõ ràng hơn: Tôi muốn lấy văn bản giữa các tiêu đề, đếm độ dài của nó và quyết định xem tôi có muốn ẩn một phần của nó hay không. Câu trả lời của bạn là rất hữu ích. Nhưng những gì tôi muốn làm là giữ tất cả các văn bản, chỉ cần thêm một chút html để ẩn một phần của nó. – Francisc