【问题标题】:How to get data from url?如何从 url 获取数据?
【发布时间】:2014-01-09 16:11:29
【问题描述】:

我如何在变量中从这个 url 获取代码?

http://www.site.com/#code=123

我试过了:

if (isset($_GET['code'])){
   $code = $_GET['code']; 
}

但是 api 返回一个 # 而不是 & 或 ?

我找到了一种使用 javascript 的方法,谢谢大家

<script>
var hash = false;
checkHash();

function checkHash(){
    if(window.location.hash != hash) {
        hash = window.location.hash;
        processHash(hash);
    } t=setTimeout("checkHash()",400);
}

function processHash(hash){

    window.location.href = "code.php?code=" + hash.substr(7);

}

【问题讨论】:

标签: php variables url


【解决方案1】:

主题标签片段不是 HTTP 协议的一部分,仅作为单个页面内的方向供客户端使用。您无法使用 PHP 解析它,因为它不会作为请求通过网络发送。

http://www.w3.org/TR/WD-html40-970708/htmlweb.html

片段网址

编写本文档时的 URL 规范 ([RFC1738]) 提供了一种机制来引用资源,但不引用 资源中的位置。网络社区已经通过了一个约定 称为“片段 URL”来引用 HTML 文档中的锚点。一种 片段 URL 以“#”结尾,后跟一个锚标识符。为了 例如,这是一个片段 URL,指向一个名为 第 2 节:

您说 API 会返回此 URL。考虑保存在变量 $url 中的 URL,您可以使用 Krish R 的答案,以 $url = parse_url($url); 开头。

如果你想从 URL 加载内容,兔子就像 file_get_contents('http://www.site.com/'); - 正如所说的那样,因为主题标签不是 HTTP 的一部分。

【讨论】:

    【解决方案2】:

    你能在 PHP 中试试这个吗,

     $url=parse_url("http://www.site.com/#code=123");
     echo $fragment =  $url["fragment"];//code=123
     if($fragment!=""){
        list($codeName, $codeValue) = @explode("=", $fragment);
        echo $codeValue; //123
     }
    

    参考:http://in3.php.net/parse_url

    【讨论】:

    • @user3174900,你是什么意思?我没有得到你!
    • @danfromgermany 嗯谢谢,所以没有办法显示值?
    • @KrishR 你缺少引号echo $fragment . ' = ' . $url["fragment"];//code=123
    • @DanFromGermany,没有必要,因为$url["fragment"] 给出的输出为code=123
    • 啊,对了,我看错了...,我不习惯在 1 行中回显和分配一个变量,我不喜欢那种代码风格:/
    【解决方案3】:

    我认为你的 PHP 没问题,但 url 看起来很奇怪。在 URL 中的第一个 'key=value' 之前应该有一个 ?符号。

    【讨论】:

    • 嗯。在这种情况下,我只能建议通过手动在浏览器中删除 API URL 来验证输出。然后你可以看到你的程序会看到什么。这对于接受 POST 请求(和 PUT、DELETE)的 API 不起作用,但对于 GET 请求(你的请求)它是一个有用的方法。
    猜你喜欢
    • 2011-02-18
    • 2016-07-20
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    相关资源
    最近更新 更多