Noo*_*oob 37 php url function hyperlink page-title
请注意Google新闻如何在每篇文章摘录的底部提供来源.
卫报 - 美国广播公司新闻 - 路透社 - 彭博社
我想模仿那个.
例如,在提交http://www.washingtontimes.com/news/2010/dec/3/debt-panel-fails-test-vote/
我想要返回的URL时The Washington Times
这怎么可能用PHP?
Jos*_*ega 61
我的答案是扩展@AI W使用页面标题的答案.以下是完成他所说的代码.
<?php
function get_title($url){
$str = file_get_contents($url);
if(strlen($str)>0){
$str = trim(preg_replace('/\s+/', ' ', $str)); // supports line breaks inside <title>
preg_match("/\<title\>(.*)\<\/title\>/i",$str,$title); // ignore case
return $title[1];
}
}
//Example:
echo get_title("http://www.washingtontimes.com/");
?>
Run Code Online (Sandbox Code Playgroud)
OUTPUT
华盛顿时报 - 政治,突发新闻,美国和世界新闻
正如您所看到的,这并不是Google正在使用的内容,因此这让我相信他们会获得一个URL的主机名并将其与自己的列表相匹配.
http://www.washingtontimes.com/ =>华盛顿时报
Mat*_*hew 33
$doc = new DOMDocument();
@$doc->loadHTMLFile('http://www.washingtontimes.com/news/2010/dec/3/debt-panel-fails-test-vote/');
$xpath = new DOMXPath($doc);
echo $xpath->query('//title')->item(0)->nodeValue."\n";
Run Code Online (Sandbox Code Playgroud)
输出:
债务委员会未能通过测试投票 - 华盛顿时报
显然,您还应该实现基本的错误处理.
您可以获取URL的内容并执行正则表达式搜索title
元素的内容.
<?php
$urlContents = file_get_contents("http://example.com/");
preg_match("/<title>(.*)<\/title>/i", $urlContents, $matches);
print($matches[1] . "\n"); // "Example Web Page"
?>
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想使用正则表达式(以匹配文档顶部附近的内容),则可以使用DOMDocument对象:
<?php
$urlContents = file_get_contents("http://example.com/");
$dom = new DOMDocument();
@$dom->loadHTML($urlContents);
$title = $dom->getElementsByTagName('title');
print($title->item(0)->nodeValue . "\n"); // "Example Web Page"
?>
Run Code Online (Sandbox Code Playgroud)
我决定你最喜欢哪种方法.
使用域主页中的get_meta_tags(),为NYT带来了可能需要截断但可能有用的东西.
$b = "http://www.washingtontimes.com/news/2010/dec/3/debt-panel-fails-test-vote/" ;
$url = parse_url( $b ) ;
$tags = get_meta_tags( $url['scheme'].'://'.$url['host'] );
var_dump( $tags );
Run Code Online (Sandbox Code Playgroud)
包括"华盛顿时报"对影响我们国家未来的问题提供突发新闻和评论的描述.
归档时间: |
|
查看次数: |
72270 次 |
最近记录: |