输入URL的处理部分

Simple question really, but I'm probably missing a really simple point.

I have an input form, that a user will paste a URL in to be navigated to the next section.

Say the user enters in: https://www.facebook.com/connect/login_success.html#access_token=XXXXXXXXXYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZAAAAAAAAAAAAAAAAAABBBBBBBBBBBB&expires_in=0

I want the form to only process the: XXXXXXXXXYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZAAAAAAAAAAAAAAAAAABBBBBBBBBBBB

So it will completely ignore:

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

and

&expires_in=0

Is this possible at all?

My form is incredibly simple:

<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>

"Bootstrap"

Thanks!

I found a much simpler solution to my issue:

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

You could do an explode(http://nl3.php.net/explode) on the ampersand('&') and paste it together in a string or variable.

Change your form to use POST, like this:

<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>

Then, you can retrieve your variable in PHP, like this:

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

which can easily be echo'ed into a JavaScript variable for your use.

At first, I suggest you to parse it on server side, not client side (JavaScript can be turned off etc.). If you need to have accesstoken as GET parameter on home.php, you can redirect user here after submit. Anyway, on server side, try it with 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;

NOTE 1: I assume that your URL in first post has type (# instead of ?). If not, just use same script as I post, but change $urlParts['query'] to $urlParts['fragment'].

NOTE 2: If you really want to/need to use JavaScript, look at php.js implementation of parse_url.

NOTE 3: Another nice JS library to handle URL operations seems to be URI.js.