PHP file_get_contents

Я ищу создать PHP-скрипт, где пользователь предоставит ссылку на веб-страницу, и он получит содержимое этой веб-страницы и на основе ее содержимого проанализирует содержимое.

Например, если пользователь предоставляет ссылку YouTube:

http://www.youtube.com/watch?v=xxxxxxxxxxx 

Затем он получит основную информацию об этом видео (миниатюра, код для встраивания?)

Или они могут предоставить ссылку vimeo:

  http://www.vimeo.com/xxxxxx 

Или даже если они должны были предоставить любую ссылку, без прикрепленного видео, например:

  http://www.google.com/ 

И он мог бы захватить только заголовок страницы или некоторый мета-контент.

Я думаю, что мне придется использовать file_get_contents, но я не совсем уверен, как использовать его в этом контексте.

Я не ищу, чтобы кто-то написал весь код, но, возможно, предоставил мне некоторые инструменты, чтобы я мог это сделать.

Solutions Collecting From Web of "PHP file_get_contents"

Вы можете использовать либо завиток, либо http- библиотеку. Вы отправляете HTTP-запрос и можете использовать библиотеку для получения информации из ответа HTTP.

Я знаю, что этот вопрос довольно старый, но я отвечу на случай, если кто-то ударит его, ища то же самое.

Используйте oEmbed (http://oembed.com/) для YouTube, Vimeo, WordPress, Slideshare, Hulu, Flickr и многих других сервисов. Если нет в списке или вы хотите уточнить его, вы можете использовать это:

http://simplehtmldom.sourceforge.net/

Это своего рода jQuery для PHP, то есть вы можете использовать селектор HTML для получения частей кода (т. Е. Все изображения, получать содержимое содержимого div, только текст (без HTML) узла и т. Д.).

Вы могли бы сделать что-то вроде этого (можно сделать более элегантно, но это всего лишь пример):

  require_once("simple_html_dom.php"); function getContent ($item, $contentLength) { $raw; $content = ""; $html; $images = ""; if (isset ($item->content) && $item->content != "") { $raw = $item->content; $html = str_get_html ($raw); $content = str_replace("\n", "<BR /><BR />\n\n", trim($html->plaintext)); try { foreach($html->find('img') as $image) { if ($image->width != "1") { // Don't include images smaller than 100px height $include = false; $height = $image->width; if ($height != "" && $height >= 100) { $include = true; } /*else { list($width, $height, $type, $attr) = getimagesize($image->src); if ($height != "" && $height >= 100) $include = true; }*/ if ($include == true) { $images = $images . '<div class="theImage"><a href="'.$image->src.'" title="'.$image->alt.'"><img src="'.$image->src.'" alt="'.$image->alt.'" class="postImage" border="0" /></a></div>'; } } } } catch (Exception $e) { // Do nothing } $images = '<div id="images">'.$images.'</div>'; } else { $raw = $item->summary; $content = str_get_html ($raw)->plaintext; } return (substr($content, 0 , $contentLength) . (strlen ($content) > $contentLength ? "..." : "") . $images); } 

file_get_contents() будет работать в этом случае, если вы allow_fopen_url что allow_fopen_url установлен в true в php.ini. Что бы вы сделали, это нечто вроде:

 $pageContent = @file_get_contents($url); if ($pageContent) { preg_match_all('#<embed.*</embed>#', $pageContent, $matches); $embedStrings = $matches[0]; } 

Тем не менее, file_get_contents() не даст вам много средств для обработки ошибок, получающих контент с успехом или false при сбоях. Если вы хотите иметь более богатый контроль над запросом и получить доступ к кодам ответов HTTP, используйте функции curl, и в частности curl_get_info , чтобы посмотреть коды ответов, типы mime, кодирование и т. Д. После того, как вы получите контент через curl или file_get_contents() ваш код для разбора его для поиска интересующего HTML-кода будет таким же.

Возможно, у Thumbshots или Snap уже есть некоторые функции, которые вы хотите?

Я знаю, что это не совсем то, что вы ищете, но, по крайней мере, для встроенных материалов, которые могут быть удобными. Также txwikinger уже ответил на ваш другой вопрос. Но, возможно, это помогает ypu.