我是一个新手,如果这个问题很傻,请原谅……
我的问题是,我想使用JQuery/JS获取网址的标题。我不想加载网址的内容,然后再解析其中的标签。
更明确地说,我有一组网址,比如20个,我想显示它们的标题…… 我所指的网址不是当前网址,所以我无法使用JS document.title ..
所以我想要做的事情是用类似 SOMEFUNC.title(URL)的形式来获取标题。是否有这样的功能?
我是一个新手,如果这个问题很傻,请原谅……
我的问题是,我想使用JQuery/JS获取网址的标题。我不想加载网址的内容,然后再解析其中的标签。
更明确地说,我有一组网址,比如20个,我想显示它们的标题…… 我所指的网址不是当前网址,所以我无法使用JS document.title ..
所以我想要做的事情是用类似 SOMEFUNC.title(URL)的形式来获取标题。是否有这样的功能?
可以尝试以下代码:
$.ajax({
url: externalUrl,
async: true,
success: function(data) {
var matches = data.match(/<title>(.*?)<\/title>/);
alert(matches[0]);
}
});
TheSuperTramp 是正确的,如果 externalUrl 不在您的域之内,则上面的代码将无效。相反,请创建此 php 文件 get_external_content.php:
<?php
function file_get_contents_curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = $_REQUEST["url"];
$html = file_get_contents_curl($url);
preg_match('/<title>(.+)<\/title>/',$html,$matches);
$title = $matches[1];
echo json_encode(array("url" => $url, "title" => $title));
然后在 JavaScript 中:function getTitle(externalUrl){
var proxyurl = "http://localhost/get_external_content.php?url=" + externalUrl;
$.ajax({
url: proxyurl,
async: true,
success: function(response) {
alert(response);
},
error: function(e) {
alert("error! " + e);
}
});
}
$.ajax({
url: "http://textance.herokuapp.com/title/www.bbc.co.uk",
complete: function(data) {
alert(data.responseText);
}
});
跨域请求无法使用ajax进行工作,但您可以编写一个脚本在您的服务器上获取特定网站的标题。
如果您正在使用PHP,您可以使用file_get_contents和preg_match函数来获取标题。这位先生在这里已经提供了代码。
http://www.cafewebmaster.com/php-get-page-title-function
然后在jQuery中,您可以将此添加到事件中或将其放入函数中。
//For the purpose of this example let's use google
var url = "http://www.google.com";
$.ajax({
type: "POST",
url: "./getURLTitle.php",
data: "{url: \"" + url + "\"}",
success: function(data) {
//do stuff here with the result
alert(data);
}
});