【问题标题】:Extract keywords from referrer URL从引荐来源网址中提取关键字
【发布时间】:2013-01-19 04:06:41
【问题描述】:

现在看来,Google 的网址结构有所不同。因此,从它们中提取引用关键字更加困难。这是一个例子:

http://www.google.co.uk/search?q=jquery+post+output+46&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a#pq=jquery+post+output+46&hl=en&cp=30&gs_id=1v&xhr=t&q=jquery+post+output+php+not+running&pf=p&sclient=psy-ab&client=firefox-a&hs=8N5&rls=org.mozilla:en-US%3Aofficial&source=hp&pbx=1&oq=jquery+post+output+php+not+run&aq=0w&aqi=q-w1&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=bdeb326aa44b07c5&biw=1280&bih=875

我执行的搜索实际上是“jquery post output php not running”,所以第一个'q='不包含完整的搜索。第二个可以。我想编写一个总是提取最后一个“q=”的脚本,但我不确定谷歌的 URL 是否总是最后一个完整的搜索。任何人都有这方面的经验。

【问题讨论】:

    标签: php referrer


    【解决方案1】:

    您可以使用parse_url()parse_str()urldecode() 完成此操作,其中$str 是引用字符串:

    $fragment = parse_url($str, PHP_URL_FRAGMENT);
    parse_str($fragment, $arr);
    
    $query = urldecode($arr['q']); // jquery post output php not running
    

    【讨论】:

    • 谢谢!但我正在努力弄清楚这是如何工作的。当我 print_r $arr 看起来好像只有一个 'q' 变量,即使在 URL 中显然有 2。你的代码是否以某种方式结合了 'q' 部分?解释将帮助我了解更多信息。
    • @LucasScholten:parse_url 中的第二个参数仅提取 URL 中井号 (#) 之后的内容,因此只有一个“q”。
    • 在这种情况下,我在脚本顶部添加了这个 if(strpos($_POST['referrer'],"#")>0) { $fragment = parse_url($_POST['referrer'], PHP_URL_FRAGMENT); } else { $fragment = parse_url($_POST['referrer'], PHP_URL_QUERY); } 因为并非所有谷歌网址都是碎片化的
    猜你喜欢
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多