2016-11-19 180 views
0
$paypal_details = "array (
    'last_name' => 'Savani',  
    'item_name' => 'Description and pricing details here.', 
    'item_number' => '101',  
    'custom' => 'localhost',  
    'period' => '1', 
    'amount' => '10.01' 
)"; 

以下是包含完整数组的示例字符串。 这是可能的字符串转换为数组,因为它是?将PHP字符串转换为数组

+1

只有'的eval($ paypal_details)' – Mohammad

+2

虽然'的eval()'会做什么你问这一切是一个可怕的想法。它打开一英里宽的潜在安全漏洞。问题是:为什么你有这样的情况?你不能避免这种情况吗? – arkascha

+1

我会严肃反对使用'eval()'来进行调试以外的任何其他操作。尝试使用'爆炸()' – 2016-11-19 12:47:00

回答

-1

您可以使用explode()函数。

<?php 

$str = "Hello world. It's a beautiful day."; 
print_r(explode(" ", $str)); 

http://www.w3schools.com/php/func_string_explode.asp

+0

请检查我有完整的数组,但以字符串格式(“”)。爆炸功能以分隔符分两部分爆炸。这里没有固定词汇。 – user3146706

+0

@ user3146706他提供了一个解决方案,请在拒绝之前检查答案。 – 2016-11-19 12:54:59

+0

@ user3146706用户提供简单的字符串到数组。但是这里是字符串内部的数组需要重新制作数组。条件不同。 – user3146706

1

你真的应该尝试获得的信息以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