当前位置:Gxlcms > PHP教程 > 问一个关于parse_str函数的问题

问一个关于parse_str函数的问题

时间:2021-07-01 10:21:17 帮助过:6人阅读

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] => 现代教育技术)

人气教程排行