我正在使用cakePHP框架创建一个网站,我和php以及网络编程的新手。我想做一些类似于Digg的提交按钮的东西,在那里你输入一个网址,它会在网页上提取图像,标题,有时还会对文章进行简短的描述。我假设这将使用PHP完成,但我对任何方法都持开放态度。
答案 0 :(得分:0)
您获取相关页面的来源(cURL库或file_get_contents()
如果启用了fopen()
URL包装器)并解析它们以获取这些详细信息。
标题可以是title
元素。
描述可以是元描述。
图像可以是最大的图像(有很多不同的查找方式)。
您还可以查找The Open Graph Protocol ...
<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" />
答案 1 :(得分:0)
我对蛋糕PHP不太熟悉,但我可以大致了解你需要做什么。
第一步是使用AJAX将URL提交给您的服务器。
然后,服务器需要获取html源代码。在php中你可以这样做:
$source = file_get_contents('http://www.example.com/')
可能还有其他功能,但应该可以使用。
获得源后,您将需要解析所需的数据。您可以使用正则表达式或其他内容来完成此部分。
然后,你可能想要设置一个php数组所需的数据,使用
json_encode($my_array)
并返回json。然后,用它做你想做的事。
希望这有帮助
答案 2 :(得分:0)
你需要做一些简单的事情:
您需要使用PHP的curl函数来获取网页的来源。 php.net网站provides a great example of this。
从该来源,您需要找到页面的标题和任何图像。最简单的方法可能是通过一个简单的正则表达式。
这是一个简单的脚本示例,它同时执行这两个操作:
<?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中选择要使用的图像。您可以随机执行此操作,也可以根据页面上的最大图像或您找到的第一个图像等执行此操作。