php是否将包含新行的字符串转换为数组?

php是否将包含新行的字符串转换为数组?,php,Php,我从API获取数据,结果字符串为 [RESPONSE] PROPERTY[STATUS][0]=ACTIVE PROPERTY[REGISTRATIONEXPIRATIONDATE][0]=2012-04-04 19:48:48 DESCRIPTION=Command completed successfully QUEUETIME=0 CODE=200 RUNTIME=0.352 QUEUETIME=0 RUNTIME=0.8 EOF 我正在尝试将其转换为一个数组,如 Array( ['

我从API获取数据,结果字符串为

[RESPONSE]
PROPERTY[STATUS][0]=ACTIVE
PROPERTY[REGISTRATIONEXPIRATIONDATE][0]=2012-04-04 19:48:48
DESCRIPTION=Command completed successfully
QUEUETIME=0
CODE=200
RUNTIME=0.352

QUEUETIME=0
RUNTIME=0.8

EOF
我正在尝试将其转换为一个数组,如

Array(
['PROPERTY[STATUS][0]'] => ACTIVE,
['CODE'] => 200,
...
);
因此,我尝试使用生成的file_get_content函数来分解它

$output = explode('=',file_get_contents($url));

但是问题是返回值的顺序并不总是相同的,所以我需要像
$array['code']=200
,和
$array['RUNTIME']=0.352
一样返回它,但是似乎没有任何新行字符?我在explode函数中尝试了
\r\n\n、
、\r\n\r\n
,但没有成功。但记事本和浏览器中都有新的行


所以我的问题是,有没有办法确定字符串是否在新行上,或者确定强制新行的字符是什么?如果没有,是否有其他方法可以将其读入数组?

“\n”
上用双引号分解,以便PHP理解这是换行符,而不是反斜杠
n
;-)然后用双引号将
=

上的每个项目分解为
“\n”
,以便PHP理解这是换行符,而不是反斜杠
n
;-)然后分解
=

上的每个项目,为什么不使用
解析ini\u文件()
解析ini\u字符串()


它应该在一个简单的步骤中完成您需要的一切(构建数组)。

为什么不使用
parse\u ini\u file()
parse\u ini\u string()

它应该可以在一个简单的步骤中完成您需要的一切(构建阵列)。

试试看

preg_split("/$/m", $str)

对于拆分,请尝试

preg_split("/$/m", $str)


要使拆分

找出中断字符是什么,您可以这样做(如果
$data
包含您发布的字符串示例):

然后看一看表,看看是什么

编辑:然后可以使用新找到的字符分解数据:

explode(ord($ascii_value), $data);


顺便说一句,
file()
是否返回了正确的数组?

要找出中断字符是什么,您可以这样做(如果
$data
包含您发布的字符串示例):

然后看一看表,看看是什么

编辑:然后可以使用新找到的字符分解数据:

explode(ord($ascii_value), $data);


顺便说一句,
file()
是否返回正确的数组?

惰性解决方案是:

$response = strtr($response, "\r", "\n");
preg_match_all('#^(.+)=(.+)\s*$#m', $response, $parts);
$parts = array_combine($parts[1], $parts[2]);
给你:

Array (
 [PROPERTY[STATUS][0]] => ACTIVE
 [PROPERTY[REGISTRATIONEXPIRATIONDATE][0]] => 2012-04-04 19:48:48
 [DESCRIPTION] => Command completed successfully
 [QUEUETIME] => 0
 [CODE] => 200
 [RUNTIME] => 0.8

惰性解决方案是:

$response = strtr($response, "\r", "\n");
preg_match_all('#^(.+)=(.+)\s*$#m', $response, $parts);
$parts = array_combine($parts[1], $parts[2]);
给你:

Array (
 [PROPERTY[STATUS][0]] => ACTIVE
 [PROPERTY[REGISTRATIONEXPIRATIONDATE][0]] => 2012-04-04 19:48:48
 [DESCRIPTION] => Command completed successfully
 [QUEUETIME] => 0
 [CODE] => 200
 [RUNTIME] => 0.8

“但是,似乎没有任何类型的新行字符?我尝试了\r\n、
,\r\n\r\n在explode函数中使用,但无效。但记事本和浏览器中都有新行。”我尝试了,但它似乎没有爆炸。例如,请参见您是否在
'\n'
“\n”
上爆炸?第一个将失败“但是似乎没有任何类型的新行字符?我尝试了\r\n、
,\r\n\r\n分解功能,但无效。但是记事本和浏览器中都有新行。”我尝试了,但似乎没有分解。例如,请参见您是否在
'\n'
“\n”
上爆炸?第一个是fail@mario有趣的是,PHP只支持一组括号。这是一个我不知道的愚蠢的限制。我从正面来看:至少它支持一个级别的数组语法。在这种情况下可能不够,但要记住一个好函数。@mario,有趣的是PHP只支持一组括号。这是一个我不知道的愚蠢的限制。我从正面来看:至少它支持一个级别的数组语法。在这种情况下可能不够,但要记住一个很好的函数。@Steven,当你有了它的ASCII值时,你可以这样分解:
explode(ord($ASCII_值),$data)+1很好的方法。但他没有告诉我们那是什么角色(?)。我要求别人告诉我!!!:}如果,这就是我在回答中建议的,谁投了反对票?@Steven,当你有ASCII值时,你可以这样分解:
explode(ord($ASCII_值),$data)+1很好的方法。但他没有告诉我们那是什么角色(?)。我要求别人告诉我!!!:}如果这是我在回答中建议的,那到底是谁投了反对票?