Php 使用ASCII代码小于32的分隔符对字符串进行内爆

Php 使用ASCII代码小于32的分隔符对字符串进行内爆,php,implode,Php,Implode,是否可以在分解/内爆函数中使用ASCII代码小于32的分隔符 我是说 $v=explode(chr(29),$string) 或 $v=explode(chr(8),$string) 我试过严厉的方法,但我总是犯错误 内爆():传递的参数无效 如果可能的话,我怎么做 我正在处理一个PHP协议,请求一个URL:,该URL返回一个带有分隔符的HTML字符串 类似于name=John&age=32&gender=male但在“=”和“&”处有chr(9)和chr(31)。例如,如何使用chr(9)

是否可以在分解/内爆函数中使用ASCII代码小于32的分隔符

我是说

$v=explode(chr(29),$string)

$v=explode(chr(8),$string)
我试过严厉的方法,但我总是犯错误

内爆():传递的参数无效

如果可能的话,我怎么做

我正在处理一个PHP协议,请求一个URL:,该URL返回一个带有分隔符的HTML字符串

类似于name=John&age=32&gender=male但在“=”和“&”处有chr(9)和chr(31)。例如,如何使用chr(9)ou chr(31)进行爆炸


我希望这些分隔符的字符代码小于32,以避免在键盘上获得的字符出现错误,所以我们的想法是使用字符代码小于32的chr(32)。

我想我找到了解决方案

function str2array($orig = null)
    {
    $arr = $dta = [];
    $val = null;
    if(ord(substr($orig, -1)) != 31) $orig .= chr(31);
    while(strlen($orig))
        {
        $byte = $orig[0];
        if(ord($byte) == 8)
            {
            $dta[0] = $val;
            $val = null;
            }
        elseif(ord($byte) == 31)
            {
            $dta[1] = $val;
            $arr[$dta[0]] = $dta[1];
            $val = null;
            $dta = [];
            }
        else $val .= $byte;
        $orig = substr($orig, 1);
        };
    return $arr;
    };

我想我找到了解决办法

function str2array($orig = null)
    {
    $arr = $dta = [];
    $val = null;
    if(ord(substr($orig, -1)) != 31) $orig .= chr(31);
    while(strlen($orig))
        {
        $byte = $orig[0];
        if(ord($byte) == 8)
            {
            $dta[0] = $val;
            $val = null;
            }
        elseif(ord($byte) == 31)
            {
            $dta[1] = $val;
            $arr[$dta[0]] = $dta[1];
            $val = null;
            $dta = [];
            }
        else $val .= $byte;
        $orig = substr($orig, 1);
        };
    return $arr;
    };

您是否可以发布一个复制错误的实际示例,以便其他人可以测试它。您可能希望查看URL编码数据-。您是否可以发布一个复制错误的实际示例,以便其他人可以测试它。您可能希望查看URL编码数据-。