gpt4 book ai didi

php - 在php中解析包含点的字符串

转载 作者:可可西里 更新时间:2023-11-01 13:13:19 24 4
gpt4 key购买 nike

我将解析以下字符串:

$str = 'ProceduresCustomer.tipi_id=10&ProceduresCustomer.id=1';                 
parse_str($str,$f);

我希望 $f 被解析为:

array(
'ProceduresCustomer.tipi_id' => '10',
'ProceduresCustomer.id' => '1'
)

实际上,parse_str 返回

array(
'ProceduresCustomer_tipi_id' => '10',
'ProceduresCustomer_id' => '1'
)

除了我自己写的函数,有人知道是否有一个 php 函数吗?

最佳答案

来自PHP Manual :

Dots and spaces in variable names are converted to underscores. For example <input name="a.b" /> becomes $_REQUEST["a_b"].

所以,这是不可能的。 parse_str()会将所有句点转换为下划线。如果您真的无法避免在查询变量名称中使用句点,则必须编写自定义函数来实现这一点。

以下函数(取自this answer)将查询字符串中每个键值对的名称转换为相应的十六进制形式,然后执行parse_str()。在上面。然后,它们恢复到原来的形式。这样,句点就不会被触及:

function parse_qs($data)
{
$data = preg_replace_callback('/(?:^|(?<=&))[^=[]+/', function($match) {
return bin2hex(urldecode($match[0]));
}, $data);

parse_str($data, $values);

return array_combine(array_map('hex2bin', array_keys($values)), $values);
}

示例用法:

$data = parse_qs($_SERVER['QUERY_STRING']);

关于php - 在php中解析包含点的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22539633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com