2012-07-08 63 views

Trả lời

10

Tôi chỉ cần lấy một cái nhìn tại các HTML DOM Parser, hãy thử:

$html = new simple_html_dom(); 
$html->load_file('xxx'); //put url or filename in place of xxx 
$title = $html->find('title'); 
echo $title->plaintext; 

$descr = $html->find('meta[description]'); 
echo $descr->plaintext; 
+3

Mã này không hoạt động cho tôi (nữa? --- câu trả lời cũ hơn phiên bản mới nhất của thư viện), bởi vì tìm có thể trả về nhiều hơn một phần tử. Để có được nó làm việc tôi cần phải thêm một tham số thứ hai với một giá trị 0 để tìm: $ html-> find ('title', 0) -> plaintext; – BlaM

+0

không hoạt động .... –

+0

câu trả lời không đúng - xem câu trả lời đã được kiểm tra của tôi bên dưới – Innate

2
$html = new simple_html_dom(); 
$html->load_file('xxx'); 
//put url or filename in place of xxx 
$title = array_shift($html->find('title'))->innertext; 
echo $title; 
$descr = array_shift($html->find("meta[name='description']"))->content; 
echo $descr; 
+0

Bạn đã thử nghiệm mã này chưa? –

+0

có! kiểm tra mã này. [xem myblog] (http: // softuses.com/how-to-extract-title-và-meta-description-using-php-đơn giản-html-dom-parser) – liuqing

+0

Tôi đã sử dụng mã này và nó hoạt động như thế nào trong việc trích xuất tiêu đề. Cảm ơn –

5
$html = new simple_html_dom(); 
$html->load_file('http://www.google.com'); 
$title = $html->find('title',0)->innertext; 

$html->find('title') sẽ trả về một mảng

vì vậy bạn nên sử dụng $html->find('title',0), thì meta [mô tả ]

21
$html = new simple_html_dom(); 
$html->load_file('some_url'); 

//To get Meta Title 
$meta_title = $html->find("meta[name='title']", 0)->content; 

//To get Meta Description 
$meta_description = $html->find("meta[name='description']", 0)->content; 

//To get Meta Keywords 
$meta_keywords = $html->find("meta[name='keywords']", 0)->content; 

LƯU Ý: Các tên của các thẻ meta là không hợp lệ!

+0

Bật. 1 để lấy theo thẻ và thuộc tính. – timofey

0

bạn có thể sử dụng mã php và quá đơn giản để biết. như ở đây

$ result = 'site.com'; $ tags = get_meta_tags ("html /".$ result);

+0

điều này sẽ không làm việc cho người bạn đời tiêu đề :) –

+0

chức năng này thất bại khủng khiếp trong một số trường hợp – Innate

1

Câu trả lời đúng là:

$html = str_get_html($html); 
$descr = $html->find("meta[name=description]", 0); 
$description = $descr->content; 

Đoạn mã trên được html sang định dạng đối tượng, sau đó là tìm phương pháp tìm kiếm một thẻ meta với mô tả tên, và cuối cùng bạn cần phải trả lại giá trị của nội dung của thẻ meta, không phải là nội dung bẩm sinh hoặc văn bản thuần túy như được vạch ra bởi những người khác.

Điều này đã được kiểm tra và sử dụng trong mã trực tiếp. Tốt nhất

+0

var nào nên giữ URL web? –

3

Taken từ giải pháp LeiXC của trên, bạn cần phải sử dụng lớp html dom đơn giản:

$dom = new simple_html_dom(); 
$dom->load_file('websiteurl.com');// put your own url in here for testing 
$html = str_get_html($dom); 
$descr = $html->find("meta[name=description]", 0); 
$description = $descr->content; 
echo $description; 

Tôi đã thử nghiệm mã này và có nó là trường hợp nhạy cảm (một số thẻ meta sử dụng một D vốn để mô tả)

Dưới đây là một số lỗi kiểm tra lỗi chính tả:

if(is_object($html->find("meta[name=description]", 0))){ 
    echo $html->find("meta[name=description]", 0)->content; 
} elseif(is_object($html->find("meta[name=Description]", 0))){ 
    echo $html->find("meta[name=Description]", 0)->content; 
} 
0
$html->find('meta[name=keywords]',0)->attr['content']; 
$html->find('meta[name=description]',0)->attr['content']; 
0

tôi thấy ea sy cách để lấy mô tả

$html = new simple_html_dom(); 
$html->load_file('your_url'); 
$title = $html->load('title')->simpletext; //<title>**Text from here**</title> 
$description = $html->load("meta[name='description']", 0)->simpletext; //<meta name="description" content="**Text from here**"> 

Nếu dòng bạn thừa khoảng trắng, sau đó thử này

$title = trim($title); 
$description = trim($description); 
Các vấn đề liên quan