将PHP字符串转换为数组
$paypal_details = "array (
'last_name' => 'Savani',
'item_name' => 'Description and pricing details here.',
'item_number' => '101',
'custom' => 'localhost',
'period' => '1',
'amount' => '10.01'
)";
以下是包含完整数组的示例字符串。 这是可能的字符串转换为数组,因为它是?将PHP字符串转换为数组
您可以使用explode()
函数。
<?php
$str = "Hello world. It's a beautiful day.";
print_r(explode(" ", $str));
请检查我有完整的数组,但以字符串格式(“”)。爆炸功能以分隔符分两部分爆炸。这里没有固定词汇。 – user3146706
@ user3146706他提供了一个解决方案,请在拒绝之前检查答案。 – 2016-11-19 12:54:59
@ user3146706用户提供简单的字符串到数组。但是这里是字符串内部的数组需要重新制作数组。条件不同。 – user3146706
你真的应该尝试获得的信息以JSON或XML格式代替,这既可以通过PHP本身解析。如果这是不可能的,你可以使用下面的代码片段从字符串中获取一个PHP数组。它使用regular expressions将字符串转换为JSON格式,然后使用json_decode对其进行解析。
当然应该改进以处理值等内的单引号,但这是一个开始。
$paypal_details = "array (
'last_name' => 'Savani',
'item_name' => 'Description and pricing details here.',
'item_number' => '101',
'custom' => 'localhost',
'period' => '1',
'amount' => '10.01'
)";
# Transform into JSON and parse into array
$array = json_decode(
preg_replace(
"/^\s*'(.*)' => '(.*)'/m", # Turn 'foo' => 'bar'
'"$1": "$2"', # into "foo": "bar"
preg_replace(
"/array \((.*)\)/s", # Turn array (...)
'{$1}', # into { ... }
$paypal_details
)
),
true
);
echo "Last name: " . $array["last_name"] . PHP_EOL;
输出:
Last name: Savani
只有'的eval($ paypal_details)' – Mohammad
虽然'的eval()'会做什么你问这一切是一个可怕的想法。它打开一英里宽的潜在安全漏洞。问题是:为什么你有这样的情况?你不能避免这种情况吗? – arkascha
我会严肃反对使用'eval()'来进行调试以外的任何其他操作。尝试使用'爆炸()' – 2016-11-19 12:47:00