[〜#〜] php [〜#〜] でユーザーが指定したURLから別のページの小さなプレビューを作成する方法を探しています。
ページのタイトル、画像(Webサイトのロゴなど)、および使用可能な場合は少しのテキストまたは説明のみを取得します。外部ライブラリ/クラスなしでこれを行う簡単な方法はありますか?ありがとう
これまで、DOCDocumentクラスを使用してHTMLをロードし、画面に表示してみましたが、それが適切な方法だとは思いません
simple_html_dom を検討することをお勧めします。それは非常に簡単になります。
タイトルと最初の画像をプルする方法の実際の例を次に示します。
<?php
require 'simple_html_dom.php';
$html = file_get_html('http://www.google.com/');
$title = $html->find('title', 0);
$image = $html->find('img', 0);
echo $title->plaintext."<br>\n";
echo $image->src;
?>
これは、外部ライブラリなしで同じことを行う2番目の例です。 HTMLで正規表現を使用することはお勧めできません。
<?php
$data = file_get_contents('http://www.google.com/');
preg_match('/<title>([^<]+)<\/title>/i', $data, $matches);
$title = $matches[1];
preg_match('/<img[^>]*src=[\'"]([^\'"]+)[\'"][^>]*>/i', $data, $matches);
$img = $matches[1];
echo $title."<br>\n";
echo $img;
?>
これらのライブラリのいずれかを使用できます。ご存知のとおり、それぞれに長所と短所があるため、それぞれについてメモを参照するか、時間をかけて自分で試してみてください。
あなたはそれらすべてをチェックして、すべての人をその最高の意図された機会に使用する方がよいでしょう。
これには SimpleHtmlDom を使用できます。次に、タイトルとimgタグ、または他に必要なことを探します。
Dom Crawler ライブラリが好きです。非常に使いやすく、次のような多くのオプションがあります。
$crawler = $crawler
->filter('body > p')
->reduce(function (Crawler $node, $i) {
// filters every other node
return ($i % 2) == 0;
});