用PHP读取另一个网站的源代码,并将其作为字符串提供给JavaScript
Reading source of another website with PHP and giving it to JavaScript as a string
我想以JavaScript中的字符串形式阅读另一个网站的元描述。我尝试使用CORS,但收到一个错误,说"请求的资源上不存在‘访问控制允许来源’标头。"
有人建议我可以使用PHP来做这件事。我不懂PHP,需要一些帮助。如何调用PHP函数来读取不同域上某个网页的源代码,然后将输出作为字符串提供给JavaScript函数?
这里有一种简单、直接的方法来帮助您获得所需。先试试。。。将下面的全部代码粘贴到一个空的PHP文件上并运行它。在这个简单的场景中,不需要Ajax。所以你有两个选项:
选项NR.1
<?php
//SIMPLY CHANGE THE URL TO THE URL YOU DESIRE
$siteURL = "https://yahoo.com/";
$siteContent = file_get_contents($siteURL);
$metaRx = "#<meta .*description.*>$#m";
preg_match($metaRx, $siteContent, $metaMatches);
$metaString = str_replace("'", "''", $metaMatches[0]);
//DUMP THE ARRAY OF MATCHES TO THE SCREEN... JUST TO EXPLORE THE RESULTS
var_dump($metaMatches);
?>
<script type="text/javascript">
//EXPOSE THE META TO YOUR JAVASCRIPT USING A GLOBAL VARIABLE (FOR EXAMPLE).
var SITE_META_DESC = '<?php echo $metaString; ?>';
// DUMP VALUE TO THE SCREEN USING ALERT....
alert(SITE_META_DESC);
</script>
这是另一种选择。。。它简洁明了;然而,它可能不会给你想要的结果:
选项2
<?php
//SIMPLY CHANGE THE URL TO THE URL YOU DESIRE
$metaTags = get_meta_tags('https://yahoo.com/');
$metaDescription = $metaTags["description"];
var_dump($metaDescription);
//USING A DATA-SOURCE ARRAY:
$arrURLs = array("http://sbb.ch", "http://alibabaexpress.com", "https://yahoo.com", "http://badoo.com" );
$arrMetaDescs = array();
// LOOP THROUGH THE $arrURLs AND GET THE META
// AND STORE THE RESULT IN AN ARRAY TOO.
foreach($arrURLs as $url){
//IF YOU WANT YOU COULD USE THE URL AS KEY FOR EASIER IDENTIFICATION
try{
$metaTags = get_meta_tags($url);
if($metaTags){
$key = preg_replace("&(https:'/'/|http:'/'/|www'.|'/.*$)?&", "", $url);
$arrMetaDescs[$key] = $metaTags["description"];
}
}catch(Exception $e){
}
}
var_dump($arrMetaDescs);
?>
<script type="text/javascript">
//EXPOSE THE META TO YOUR JAVASCRIPT USING A GLOBAL VARIABLE (FOR EXAMPLE).
var SITE_META_DESC = '<?php echo $metaDescription; ?>';
alert(SITE_META_DESC);
// IN THE CASE OF ARRAY-BASED META-EXTRACTION,
// STORE THE META VALUES IN JSON FORMAT FOR JAVASCRIPT
var ARR_META_DESC_EXTRACT = '<?php echo json_encode($arrMetaDescs); ?>';
console.log(ARR_META_DESC_EXTRACT);
</script>
这里有一种方法:
- 在服务器上设置页面
source_getter.php
,并包含以下代码(来自此答案):
$html = file_get_contents('your_url_here');
echo $html;
- 如果您使用的是jQuery,请运行如下请求:
$.ajax({
url : 'source_getter.php',
success : function (result) {
doSomethingWithResult(result);
// result will equal $html from your PHP code
},
error : function () {
alert("error");
}
})
我还没有专门测试过这段代码,但它应该可以正常工作。
这可能是一种简单的方法:
<?php
// Get Meta Tags from the given URL
$tags = get_meta_tags('http://www.example.com');
?>
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var urlMetaDesc = "<?php echo $tags['description']; ?>";
alert(urlMetaDesc);
</script>
</head>
<body>
</body>
</html>
但请记住,如果网站没有设置元描述标签,则不会返回任何内容,也不会显示任何警报。
相关文章:
- 将DOM节点值与字符串Javascript进行比较
- 到UpperCase字符串Javascript中的特定字符索引
- 替换字符串javascript中的所有特殊字符..
- 在数组中查找某些字符串(Javascript)
- 解析特定的字符串Javascript(Node.js)
- 从字符串 JavaScript 中过滤多个正则表达式
- 在字符串 JavaScript 中使用正则表达式替换
- 忽略字符串javascript中的字符
- 如何检查url是否包含多个字符串.Javascript/jquery
- 截断字符串JavaScript
- 计算字符串javascript中的某些单词
- 从'获取本月的最后一天;2015-02-23'字符串(javascript)
- 从字符串javascript中获取键值对
- 从路径字符串 - Javascript 获取所有父路径
- 在字符串Javascript中查找丢失的字母
- AngularJS:如何使所有ng模型都是字符串.JavaScript和长整数
- 将浮点转换为至少有一个小数点的字符串(javascript)
- 替换字符串 JavaScript 中的多个文本
- 检查另一个字符串 JavaScript 中一个字符串是否有任何字符的最佳方法
- 将变量的值包含在 href 字符串 javascript 中