2016-11-19 8 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' 
)"; 

Hier ist Beispiel String, in dem vollständige Array enthalten. Ist es möglich, String in Array zu konvertieren, wie es ist?PHP-String in Array konvertieren

+1

Nur 'eval ($ paypal_details)' – Mohammad

+2

Während 'eval()' tun würde, was Sie für all dies fragen eine schreckliche Idee. Es öffnet potenzielle Sicherheitslücken eine Meile weit. Die Frage ist: Warum haben Sie eine solche Situation? Kannst du das nicht vermeiden? – arkascha

+1

Ich würde ernsthaft empfehlen, 'eval()' für alles andere als Debuggen zu verwenden. Versuchen Sie es mit 'explode()' –

Antwort

-1

Sie können die explode() Funktion verwenden.

<?php 

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

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

+0

Bitte überprüfen Sie, ob das Array komplett ist, aber im String-Format (""). Mit explode-Funktion explodieren in zwei Teilen mit Trennzeichen. hier ist kein fixes Wort. – user3146706

+0

@ user3146706 er hat Ihnen eine Lösung zur Verfügung gestellt, überprüfen Sie bitte die Antwort vor der Ablehnung. –

+0

@ user3146706 Benutzer bieten eine einfache Zeichenfolge zum Array. Aber hier ist das Array innerhalb der Zeichenfolge muss wieder Array gemacht werden. Zustand ist anders. – user3146706

1

Sie versuchen wirklich sollten stattdessen die Informationen in JSON oder XML-Format zu erhalten, die sowohl nativ von PHP analysiert werden kann. Wenn das nicht möglich ist, können Sie das folgende Code-Snippet verwenden, um ein PHP-Array aus der Zeichenfolge zu erhalten. Es verwendet regular expressions, um die Zeichenfolge in JSON-Format umzuwandeln, und analysiert es anschließend unter Verwendung von json_decode.

Es sollten natürlich Verbesserungen vorgenommen werden, um flüchtige einfache Anführungszeichen in Werten usw. zu behandeln, aber es ist ein Anfang.

$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; 

Ausgang:

Last name: Savani