输入URL的处理部分

时间:2014-02-06 11:09:52

标签: javascript php html twitter-bootstrap

真的很简单,但我可能错过了一个非常简单的观点。

我有一个输入表单,用户将粘贴一个URL以导航到下一部分。

假设用户输入:https://www.facebook.com/connect/login_success.html#access_token=XXXXXXXXXYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZAAAAAAAAAAAAAAAAAABBBBBBBBBBBB&expires_in=0

我希望表单只处理:XXXXXXXXXYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZAAAAAAAAAAAAAAAAAABBBBBBBBBBBB

所以它会完全忽略:

https://www.facebook.com/connect/login_success.html#access_token=

&expires_in=0

这有可能吗?

我的表格非常简单:

<form action="home.php" method="GET">
                    <div class="form-group">
                         <label for="exampleInputEmail1">Access Token.</label>
                         <input type="text" class="form-control" id="exampleInputEmail1" name="accesstoken"/>
                    </div>
                    <button type="submit" class="btn btn-default btn-block">Confirm</button>
                </form>

“自举”

谢谢!

4 个答案:

答案 0 :(得分:0)

您可以在&符号('&amp;')上执行explodehttp://nl3.php.net/explode)并将其粘贴在一个字符串或变量中。

答案 1 :(得分:0)

将表单更改为使用POST,如下所示:

<form action="home.php" method="POST">
    <div class="form-group">
        <label for="exampleInputEmail1">Access Token.</label>
        <input type="text" class="form-control" id="exampleInputEmail1" name="accesstoken"/>
    </div>
    <button type="submit" class="btn btn-default btn-block">Confirm</button>
</form>

然后,您可以在PHP中检索您的变量,如下所示:

<?php $accesstoken = $_GET['accesstoken']; ?>

可以很容易echo加入JavaScript变量供您使用。

答案 2 :(得分:0)

首先,我建议您在服务器端解析它,而不是客户端(可以关闭JavaScript等)。如果您需要在accesstoken上使用home.php作为GET参数,则可以在提交后将用户重定向到此处。无论如何,在服务器端,请使用parse_url

进行尝试
$urlParts = parse_url($_POST['accesstoken']); // Now you have all URL parts in array
$urlQuery = $urlParts['query']; // Now you have only query part
$queryParts = explode('&', $urlQuery); // Separate them

foreach ($queryParts as $query)
{
   $singleQueryPart = explode('=', $query); // Separate key from value

   if ($singleQueryPart[0] == 'access_token') // If the key is same as we are looking for...
   {
      $token = $singleQueryPart[1]; // ...assign value and break loop
      break;
   }
}

echo $token;

注1:我认为您在第一篇文章中的网址类型为#,而不是?)。如果没有,请使用我发布的相同脚本,但将$urlParts['query']更改为$urlParts['fragment']

注2:如果您确实需要/需要使用JavaScript,请查看php.js implementation of parse_url

注3:处理URL操作的另一个不错的JS库似乎是URI.js

答案 3 :(得分:0)

我找到了一个更简单的解决方案来解决我的问题:

<script>
$(document).ready(function() {
    $('#btnSubmit').click(function(e) {
        var val = document.getElementById('exampleInputEmail1').value;
        $('#exampleInputEmail1').val(val.substring(val.indexOf("=") + 1, val.indexOf('&')));
    });
});
</script>