我有一个字符串,它来自js使用encodeURICompoent()。现在我想将此字符串转换为数组。我尽力解决这个问题。但我找不到任何解决方案来做到这一点。任何帮助非常感谢。
array string = 'array(0=>array("packid"=>22,"pverid"=>18,"yaml"=>"- url: /static
static_dir: static
- url: .*
script: provider.py" ),1=>array("packid"=>23,"pverid"=>19,"yaml"=>"- url: /static
static_dir: static
- url: .*
script: provider.py" ));';
感谢你, sureace
答案 0 :(得分:1)
看起来eval
应该将此字符串转换为数组
BUT: 您永远不应该使用eval
,特别是您从外部来源获得的输入,因为它会打开一系列安全问题。相反,你应该手工解析字符串,但这将是一个非常麻烦。
您应该找到一种更好的方式来发送数组值,例如通过JSON。特别是从Javascript发送值时,这是常用的方法。
答案 1 :(得分:1)
如deceze所述,您可以使用eval()
将此字符串转换为PHP数组,但是否应该是另一回事......
$myCodeString = 'array(0=>ar ...... etc.'; // Your coded string
eval('$myArray = '.$myCodeString);
var_dump($myArray);
至少返回一个有效的PHP数组:
array(2) {
[0]=>
array(3) {
["packid"]=>
int(22)
["pverid"]=>
int(18)
["yaml"]=>
string(71) "- url: /static
static_dir: static
- url: .*
script: provider.py"
}
[1]=>
array(3) {
["packid"]=>
int(23)
["pverid"]=>
int(19)
["yaml"]=>
string(72) "- url: /static
static_dir: static
- url: .*
script: provider.py"
}
}
你可能想要解析你的“yaml”字段......?
答案 2 :(得分:0)
查看implode功能。
答案 3 :(得分:0)
使用serialize或json传输数组会更容易。 (但在这种情况下,您需要在客户端上使用一个小函数来序列化/ json_encode)
编辑:如果encodeURIComponent
有问题,请在json_decode之前执行urldecode ...
答案 4 :(得分:0)
很难理解你在这里问的是什么。
您想将yaml字符串转换为php数组吗?如果是,请尝试spyc。
答案 5 :(得分:-1)
json string = packs =“{\”packid \“:\”22 \“,\”pverid \“:\”18 \“,\”yaml \“:\” - %20url%3A%20% 2Fstatic%0A%20%20static_dir%3A%20static%0A%0A-%20url%3A%20 %0A%20%20script%3A%20provider.py \ “},{\” packid \“:\ “23 \”,\ “pverid \”:\ “19 \”,\ “YAML \”:\“ - %20url%3A%20%2Fstatic%0A%20%20static_dir%3A%20static%0A%0A-% 20url%3A%20。%0A%20%20script%3A%20provider.py \ “}”
感谢你, sureace