2012-03-18 3 views
2

Digg 같은 링크를 업로드 할 수있는 웹 사이트에서 기능을 만들려고합니다. 사용자가 내 웹 사이트에 업로드하는 URL에서 HTML 소스 코드를 가져 와서 .txt 파일에 저장하는 코드가 있습니다. 그런 다음 태그의 내용을 가져오고 싶습니다.PHP를 사용하여 HTML 파일에서 메타 데이터를 가져 오는 방법은 무엇입니까?

<meta name="content" description="GRAB THIS"> 

이 태그가 있다고 가정합니다. 때로는 작동하지만 다른 특정 시간대에는 작동하지 않습니다. 특정 웹 페이지의 소스 코드에 코드에서 지정한 메타 태그가 정확하게 포함되어 있어도 작동하지 않습니다. 'GRAB THIS'콘텐츠에 HTML 항목 (& 등)이 포함되어 있으면 올바르게 작동하지 않는 것으로 나타났습니다. 이 기능을 작동시키는 방법에 대한 아이디어가 있으면 알려주십시오. 내가 MySQL 데이터베이스에 넣고 그래서 내 코드의 휴식 후,

$html_data = file_get_contents($path_to_txt_file_that_contains_html); 
preg_match('#<meta name="description" content="(.+?)">#si', $html_data, $tor; 
$tor = str_replace ('<meta name="description" content="' , "", $tor[0]); 
$tor = str_replace ('">', "", $tor); 

때때로 $ 토르는 여전히

<meta name="description" content="CONTENT" 

이 포함되어 있지만 닫는없이> : 여기 내 코드입니다. 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까? 어떤 도움을 주셔서 미리 감사드립니다!

+0

HTML에서 정규식을 사용하고 있습니다. –

답변

2

사실 매우 간단합니다.

PHP는이 솔루션에 내장 된 자신의 것 제공 : http://php.net/manual/en/function.get-meta-tags.php

+0

머리를 주셔서 감사합니다. 나는 한 시간 쯤 찾아서 이것을 보지 못했다. –

+1

예. 나는 그것이 바로 그것을 발견 한 이후 당신이 검색하는 것 같아요. – Daniel

1

대부분의 사람들은 HTML을 구문 분석있는 DOMDocument를 사용하는 당신에게 말할 것이다. 대부분의 상황에서는 동의하지만 정규 표현식을 사용하는 것이 더 쉬운 경우도 있습니다. 그래서 당신의 질문에 정규식을 사용하고 있기 때문에, 여기에 정규식 솔루션입니다.

$html_data = file_get_contents($path_to_txt_file_that_contains_html); 
preg_match('#<meta name="description".*content="([^"]+)">#siU', $html_data, $tor); 
$tor = $tor[1]; 

귀하의 상황에서는 정상적으로 작동합니다.