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=Modern Educational Technology
ただし、上記の文字列が解析されると、
< になります。 🎜>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] => 现代教育技术)