2016-11-19 179 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