Bir ilişkisel dizi için bir dize dönüştürmek

3 Cevap php

Nasıl böyle bir dize PHP bir ilişkisel dizi dönüştürmek istiyorsunuz?

key1="value" key2="2nd value" key3="3rd value"

3 Cevap

Sen anahtar / değer çiftlerini almak için normal bir ifade kullanabilirsiniz:

preg_match_all('/(\w+)="([^"]*)"/', $str, $matches);

Ama bu sadece komple anahtar / değer çiftlerini almak istiyorum. Gibi Geçersiz giriş key=value" tanınan olmazdı. Bir ayrıştırıcı daha iyi yapardı.

EDIT: Gumbo cevabı bu daha iyi bir çözümdür.

Size bu herhangi bir iyi?

Lütfen dize böyle bir değişken olduğunu varsayalım:

$string = 'key1="value" key2="2nd value" key3="3rd value"';

Birincisi:

$array = explode('" ', $string);

şimdi var

array(0 => 'key1="value', 1=>'key2="2nd value', 2=>'key3="3rd value');

Daha sonra:

$result = array();
foreach ($array as $chunk) {
  $chunk = explode('="', $chunk);
  $result[$chunk[0]] = $chunk[1];
}

Ben bir ilişkisel dizi için verilen dize dönüştürmek için aşağıdaki ile geldi bamya tarafından önerilen düzenli ifade kullanarak:

$s = 'key1="value" key2="2nd value" key3="3rd value"';
$n = preg_match_all('/(\w+)="([^"]*)"/', $s, $matches);

for($i=0; $i<$n; $i++)
{
    $params[$matches[1][$i]] = $matches[2][$i];
}

Eğer herhangi bir yorum vardı merak ediyordum.