1

可能重复:
为什么 URL 的哈希部分不在服务器端?

我有一个网址http://www.example.com/edit-your-profile/#file%5B0%5D%5Bstatus%5D=Complete&file%5B0%5D%5BremoteFileURL%5D=http%3A%2F%2Fi.imgur .com%2Fe0XJI.jpg&file%5B0%5D%5BfileSource%5D=Previous%20Uploads&file%5B0%5D%5BpicID%5D=p43

我需要在页面上回显或显示“remoteFileURL”参数作为输入字段的值,看来我不能用 PHP 做到这一点(据我所知)。我不太了解js,任何帮助将不胜感激!

4

5 回答 5

3

简化 - 不是美丽......只是为了展示一种可能性并为您指明正确的方向。退货http://i.imgur.com/e0XJI.jpg

<?php
$url = 'http://www.example.com/edit-your-profile/#file%5B0%5D%5Bstatus%5D=Complete&file%5B0%5D%5BremoteFileURL%5D=http%3A%2F%2Fi.imgur.com%2Fe0XJI.jpg&file%5B0%5D%5BfileSource%5D=Previous%20Uploads&file%5B0%5D%5BpicID%5D=p43';
$urlDecoded = urldecode($url);
$urlParts = parse_url($urlDecoded);

$matches = array();
$regexRemoteUrl = preg_match('/remoteFileUrl\]=([^&]+)/i', $urlParts['fragment'], $matches);
// remoteFileURL
echo($matches[1]);
?>
于 2012-07-31T08:40:06.383 回答
0

您可以使用正则表达式搜索与“remoteFileUrl”后跟一些字符匹配的任何内容......然后在每个&符号处拆分字符串......然后简单地将该文本字符串回显到您的输入字段中。

于 2012-07-31T08:31:45.750 回答
0

如果你想在 Javascript 中使用它,这里有一个简单的正则表达式可以为你得到它:

decodeURI(window.location.hash).match(/remoteFileURL]=([^&]+)/)[1]

"http%3A%2F%2Fi.imgur.com%2Fe0XJI.jpg"为我返回

所以我们使用unescape

unescape(decodeURI(window.location.hash).match(/remoteFileURL]=([^&]+)/)[1])

要得到"http://i.imgur.com/e0XJI.jpg"

于 2012-07-31T08:37:41.803 回答
0

这是您可以在 JavaScript 或 php 中使用的正则表达式:

(?:file%5B0%5D%5BremoteFileURL%5D|remoteFileURL)=(.+?)&

由于您的示例 URL 具有一种非常奇怪的参数命名形式,因此我将这种形式和通常的方式都包括在内。它匹配file[0][remoteFile]以及remoteFile捕获该参数的值。

在 JavaScript 中,如果有一个包含带有 id 的 URL 的字段,您可以这样做URL

var url = document.getElementById('URL').value;
var myRegexp = /(?:file%5B0%5D%5BremoteFileURL%5D|remoteFileURL)=(.+?)\&/;
var match = myRegexp.exec(url);
alert(match[1]);
于 2012-07-31T08:45:32.313 回答
0
var decodedUri = decodeURIComponent('http%3A%2F%2Fdtzhqpwfdzscm.cloudfront.net%2F4ca06373624db.jpg');

您可以使用此功能从 url 中提取您需要的参数。

function getURLParameter(name,url) {
    return decodeURI(
        (RegExp(name + '=' + '(.+?)(&|$)').exec(decodedUri)||[,null])[1]
    );
}

调用函数如下

 var fileUrl = getURLParameter("remoteFileURL",decodedUri);

:)

于 2012-07-31T08:41:53.357 回答