php是否将包含新行的字符串转换为数组?
我从API获取数据,结果字符串为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( ['
[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很好的方法。但他没有告诉我们那是什么角色(?)。我要求别人告诉我!!!:}如果这是我在回答中建议的,那到底是谁投了反对票?