Как я могу получить информацию о других веб-сайтах с URL-адреса, например, кнопки отправки Digg? - PullRequest
0 голосов
/ 15 октября 2010

Я создаю веб-сайт с использованием платформы cakePHP, а также новичка в php и веб-программировании. Я хочу сделать что-то похожее на кнопку «Отправить» Digg, где вы вводите URL, и он выбирает изображение, заголовок и иногда краткое описание статьи на веб-странице. Я предполагаю, что это будет сделано с помощью php, но я открыт для любого метода.

Ответы [ 3 ]

0 голосов
/ 15 октября 2010

Я не слишком хорошо знаком с тортом PHP, но могу дать вам общее представление о том, что вам нужно сделать.

Первым шагом было бы использование AJAX для отправки URL-адреса на ваш сервер..

Затем серверу потребуется захватить источник html.В php вы можете сделать:

$source = file_get_contents('http://www.example.com/')

Возможно, есть и другие функции, но они должны работать.

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

Тогда вы, вероятно, захотите установить необходимые данные в массив php, использовать

json_encode($my_array)

и вернуть json.Затем делайте с ней что хотите.

Надеюсь, это поможет

0 голосов
/ 15 октября 2010

Вам нужно будет сделать несколько простых вещей:

  1. Вам потребуется использовать функции curl в PHP, чтобы получить исходный текст для веб-страницы.Сайт php.net предоставляет отличный пример этого .

  2. . Из этого источника вам нужно будет найти заголовок страницы и любые изображения.Самый простой способ, вероятно, будет через простое регулярное выражение.

Вот простой пример сценария, который выполняет оба:

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "stackoverflow.com"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch);

$titles = array();
preg_match_all("/<title>(.*)<\/title>/im", $output, &$titles, PREG_PATTERN_ORDER);

$images = array();
preg_match_all("/<img *src= *['\"](.*)['\"](.*)\/*>/iU", $output, &$images, PREG_PATTERN_ORDER);

$page_title = $titles[1][0];
$images_found = $images[1];

echo "Page title was: {$page_title}\n";
foreach($images_found as $image_src) echo "Image: {$image_src}\n";
?>

Включенные мной регулярные выражения несовершенны и не будут захватывать все заголовки или все изображения в каждомслучай, но оба они хорошо начинаются.

Вам также нужно будет выбрать, какое изображение вы хотите использовать из массива $ images.Вы можете сделать это случайным образом или на основе самого большого изображения на странице, или первого найденного вами изображения и т. Д.

0 голосов
/ 15 октября 2010

Вы берете источник рассматриваемой страницы (библиотека cURL или file_get_contents(), если fopen() упаковщики URL-адресов включены) и анализируете его для этих подробностей.

Заголовок может быть элементом title.

Описание может быть мета-описанием.

Изображение может быть самым большим (его можно найти разными способами).

Вы также можете искать Протокол Open Graph ...

<meta name="og:site_name" content="Stack Overflow" />
<meta name="og:url" content="http://www.stackoverflow.com/" />
<meta name="og:title" content="Hello" />
<meta name="og:image" content="http://www.gravatar.com/avatar/5a9f58455ea36c880bc46820255fb084?s=32&d=identicon&r=PG" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...