为什么当我传递带有'form.php?'之类的字符串时会出现错误,例如,
parse_str('form.php?category=contacts');
echo $category;
我明白了,
Notice: Undefined variable: category in C:\wamp\www\1hundred_2011_MVC\applications\CMS\category_manage.php on line xx
但是,
parse_str('category=contacts');
echo $category;
我得到了我想要的东西,
contacts
我该如何解决?我必须通过'xxx.php?category=contacts'
之类的内容来获取变量中的'contacts'
或其他内容。
感谢。
答案 0 :(得分:8)
函数parse_str
仅解析查询字符串,而不解析整个URL。尝试使用parse_url
并将组件设置为PHP_URL_QUERY
,先提取查询字符串,然后使用parse_str
。
$url_query = parse_url('form.php?category=contacts', PHP_URL_QUERY);
parse_str($url_query, $output);
echo $output['category'];
结果:
contacts
答案 1 :(得分:1)
parse_str
只接受查询字符串:
$q = 'foo?hello=world';
parse_str($q);
echo ${'foo?hello'}; // outputs 'world'
首先删除网址的开头:
$q = 'foo?hello=world';
parse_str(substr($q, strpos($q, '?')+1);
echo $hello; // outputs 'world'
考虑使用parse_str
第二个参数来代替数组,以避免覆盖局部变量。
答案 2 :(得分:0)
你可能想要使用urldecode加上返回提取的变量,如下所示:
... some helper class...
/**
* Return parsed serialized JQuery object as PHP array of extracted variables
*/
protected static function parseFields($encoded){
parse_str(urldecode($encoded));
unset($encoded);
return get_defined_vars();
}
此外,您可能希望利用JQuery函数“$ .param(data)”来创建URL编码的字符串:
var encoded=$.param(fields);
并通过AJAX / POST请求提交给服务器以运行parseFields()。