2011-07-06 30 views
2

我试图打破这种字符串,如何将此字符串分解为这样的数组?

AFRIKAANS = af 
ALBANIAN = sq 
AMHARIC = am 
ARABIC = ar 
ARMENIAN = hy 
AZERBAIJANI = az 
BASQUE = eu 
BELARUSIAN = be 
BENGALI = bn 
BIHARI = bh 
BULGARIAN = bg 
BURMESE = my 
CATALAN = ca 
CHEROKEE = chr 
CHINESE = zh 

进入这样

$lang_codes['chinese'] = "zh"; 

数组所以语言的名称是关键,和值是语言代码。这非常简单,但我无法理解它。我已经采取了从编程制动,时间过长,很明显......

我试过在\n爆炸然后用foreach,在=再次爆炸,但我似乎无法拼凑一起就是我想要的。

+0

介意显示代码? –

回答

4

我试过在\爆炸N,然后使用foreach,再次在爆炸“=”

我认为这是完全正确的做法。

$lines = explode("\n", $langs); 
$lang_codes = array(); 

foreach ($lines as $line) { 
    list ($lang, $code) = explode(" = ", $line, 2); 
    $lang_codes[$lang] = $code; 
} 

如果你想在语言使用小写字母,因为在你的例子($lang_codes['chinese']),您将需要调用strtolower

$lang_codes[strtolower($lang)] = $code; 

查看PHP手册欲了解更多关于这些功能:

0

MAYB你shold做:

$array = explode("\n" , $string); 
$finalArray =array(); 
$foreach ($array as $value){ 
     $array2 = explode(' = ', $value); 
     $finalArray[$array2[1]] = $array2[0]; 

} 
+2

这不起作用,因为'\ n'不被解释为单引号内的换行符。 – lonesomeday

+0

是的你是对的 –

0
<?php 
$str ="AFRIKAANS = af 
ALBANIAN = sq 
AMHARIC = am 
ARABIC = ar 
ARMENIAN = hy 
AZERBAIJANI = az 
BASQUE = eu 
BELARUSIAN = be 
BENGALI = bn 
BIHARI = bh 
BULGARIAN = bg 
BURMESE = my 
CATALAN = ca 
CHEROKEE = chr 
CHINESE = zh"; 

$arr = explode("\n", $str); 
$lang_mapped = array(); 

foreach ($arr as $line) { 
    list ($lang, $code) = explode(" = ", $line, 2); 
    $lang_mapped[$lang] = $code; 
} 
$arr = explode("\n", $str); 
echo "<pre>"; 
print_r($lang_mapped); 
echo "</pre>"; 
?> 
2

虽然爆炸的答案是技术上是正确的,我立刻想到,你试图解析INI文件。这是更简单的方法,完全符合你的要求。

<?php 
$string = "AFRIKAANS = af 
ALBANIAN = sq 
AMHARIC = am 
ARABIC = ar 
ARMENIAN = hy 
AZERBAIJANI = az 
BASQUE = eu 
BELARUSIAN = be 
BENGALI = bn 
BIHARI = bh 
BULGARIAN = bg 
BURMESE = my 
CATALAN = ca 
CHEROKEE = chr 
CHINESE = zh"; 

$array = array_change_key_case(parse_ini_string($string)); 

echo $array['chinese'];