首页  >  文章  >  后端开发  >  问一个关于parse_str函数的问题

问一个关于parse_str函数的问题

WBOY
WBOY原创
2016-06-20 12:26:031291浏览

parse_str函数很好用,可以把字符串转换为数组,并且还带有索引。可是,如果索引值中有  . 号,它就会自动把它转换为下划线。例如:

$key = "现代教育技术"; 

$postd[1]="course.title=";
 $postdd=$postd[1].$key;
parse_str($postdd,$fields);
   print_r($fields);

怎么样让parse_str函数不把点号转换为下划线呢。


回复讨论(解决方案)

parse_str 是按 HTTP协议 的约定进行工作的
键名中的 . (点)被换成 _ (下划线)是 http 协议为防止歧义而做的约定
 如果你想原样转化,就得自己编写代码

$s = 'a.1=2&b.2=3';$p = '/&(?!amp;)/';foreach(preg_split($p, $s) as $v) {  $t = explode('=', $v);  $r[$t[0]] = $t[1];}print_r($r);
Array(    [a.1] => 2    [b.2] => 3)

method1=1&keyzy=name&keyword=现代教育技术

可上面这个字符串解析之后就变成了

Array ( [method1] => 1 ) 

是吗?

$s = 'method1=1&keyzy=name&keyword=现代教育技术';$p = '/&(?!amp;)/';foreach(preg_split($p, $s) as $v) {  $t = explode('=', $v);  $r[$t[0]] = $t[1];}print_r($r);
Array(    [method1] => 1    [keyzy] => name    [keyword] => 现代教育技术)

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn