【问题标题】:URL Encoding for PHPPHP 的 URL 编码
【发布时间】:2012-03-09 17:02:51
【问题描述】:

我正在尝试使用类似于

的 XML 向服务器发送一个简单的 URL 请求
xmlhttp.open("GET","serverFile.php?q="+str,true);
xmlhttp.send();

我在 javascript 文件中包含三个变量,即:

var userName = Steve;
var findtype = Green Holder;
var findcategory = B Provincial;

我试图将字符串“打包”成某种形式

var combinedString = "find&userName=" + userName + "&type=" + findType + "&category=" + findCategory;

然后调用上面的函数

xmlhttp.open("GET","serverFile.php?q="+combinedString,true);

但我很困惑如何在服务器端对此进行解码,或者这是否可行。我原本想有一个 if 语句:

$q=$_GET["q"];
if ($q == "find")
{
    $name=$_GET["userName"];
    $type=$_GET["type"];
    $category=$_GET["category"];
    ...do other coding here to get data
}

但我对 PHP 很陌生,所以我不知道这是否是正确的方法。我试图在网上找出适当的 URL 编码,但组合字符串是否采用适当的形式? “&”会适当地划分内容还是我需要& 并且我需要在空格之间放置一个加号还是它自己会这样做?任何信息都会有所帮助!

【问题讨论】:

    标签: php javascript xml


    【解决方案1】:

    在使用字符串连接之前,您需要在 JavaScript 中对 URL 组件进行编码。

    combinedString = ... + encodeURIComponent(userName) + ... + encodeURIComponent(findType) + ...
    

    PHP 会自动用 url 解码值填充$_GET,所以如果你要通过:

    ?foo=%2F%40%23%24
    

    PHP 会自动将$_GET['foo'] 解码为等于"/@#$"


    至于您的& 评论,您只需要在使用 XML 中的值(或本例中的 HTML,这很接近但不完全相同)时转义 XML。

    如果您只是在浏览器的地址栏中输入内容,您会使用:

    somepage.php?foo=bar&fizz=buzz
    

    但是,如果您在锚元素 (<a>) 中进行标记,您会使用:

    <a href="somepage.php?foo=bar&amp;fizz=buzz">lorem ipsum</a>
    

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      相关资源
      最近更新 更多