URL Encoding for PHP



我正试图用类似的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编码,但组合字符串的形式合适吗?"&"会适当地划分内容吗?还是我需要&,并且我需要在空格之间加一个加号?还是它自己会这样做?任何信息都会有所帮助!

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

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

PHP将自动用url解码值填充$_GET,所以如果您要传递:

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

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


至于&注释,只有在使用XML中的值时才需要转义XML(在本例中为HTML,它很接近,但不完全相同)。

如果你只是在浏览器的位置栏中输入,你会使用:

somepage.php?foo=bar&fizz=buzz

但如果你在锚元素(<a>)中标记它,你会使用:

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

最新更新