加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 通过jQuery获取META描述

发布时间:2020-12-13 22:09:13 所属栏目:PHP教程 来源:网络整理
导读:假设我做了一个简单的 AJAX请求(在jQuery中),比如geturl.php?url = http://google.com 和geturl.php是这样的: ?php if($_GET['url']) { $url=$_GET['url']; echo file_get_contents($url); }? 简单吧? 我如何从jQuery中返回的(非常长的)字符串中获取META
假设我做了一个简单的 AJAX请求(在jQuery中),比如geturl.php?url = http://google.com

和geturl.php是这样的:

<?php
    if($_GET['url'])
    {
        $url=$_GET['url'];
        echo file_get_contents($url);
    }
?>

简单吧?

我如何从jQuery中返回的(非常长的)字符串中获取META描述?

这是我到目前为止所拥有的.是的,我知道,desc是错的.

$.get("geturl.php?url="+url,function(response)
{
    // Loading <title></title>data
    var title=(/<title>(.*?)</title>/m).exec(response)[1];
    var desc = $("meta[name=description]").val();
    $("#linkbox").html("<div><b>"+title+"</b><br/>"+url+"<br />Desc: " + desc)
});

解决方法

使用正则表达式解析HTML是 bad practice.

令人讨厌的是,jQuery不支持解析头部中的元素,只支持正文.所以直接用JS代替:

window.onload = function(){ 
    $.ajax({
          type: 'GET',url: '/',dataType: 'html',success: function(data) {

            //cross platform xml object creation from w3schools
            try //Internet Explorer
              {
              xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
              xmlDoc.async="false";
              xmlDoc.loadXML(data);
              }
            catch(e)
              {
              try // Firefox,Mozilla,Opera,etc.
                {
                parser=new DOMParser();
                xmlDoc=parser.parseFromString(data,"text/xml");
                }
              catch(e)
                {
                alert(e.message);
                return;
                }
              }

            var metas = xmlDoc.getElementsByTagName("meta");
            for (var i = 0; i < metas.length; i++) {
              if (metas[i].getAttribute("name") == "description") {
                alert(metas[i].getAttribute("content") || metas[i].getAttribute("edit"));
              }
            }
          }
    });
  }

从David Burrows开始无耻地撕掉.谢谢,大卫!

小提琴:http://jsfiddle.net/wCL8W/8/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读