2016-04-07 4 views
0

私は少し複雑な以下のコードを書いている。をカスケードする代わりに、以下のコードをless step内で減らすことが可能です()。どのようにこの文字列の操作コードを減らす

$countries='IN,US,AU,MY,TH,KR,TW';  //list country codes separated by comma 
$countries=explode(',',$countries);  //partition from , 
$countries=implode('\',\'',$countries);  //add ' at start and end of the country code 
$countries="'".$countries."'";    //add ' to first and last country code 
$countries=explode(',',$countries);   //create array by breaking it from , 
print_r($countries); 

OUTPUT

アレイ([0] => 'IN' [1] => 'US' [2] => 'AU' [3] => 'MY' [4] => 'TH' [5] => 'KR' [6] => 'TW')出力以下等の

+0

だから、最終的な配列をしたい、それはあなたの最初の文字列から、しかし、 '「「'値の周りにいるのですか? – Sean

+0

おそらく、preg_replaceはループ内で – Andreas

+0

を実行する可能性があります。この場合、uプリント値に "$ value"を追加すると、 –

答えて

0

$1, $2... $nは括弧に包まれた試合への参照です。 $0$1最初括弧捕捉なり、全体の一致となり、$2第二なり、等

$1 is a reference to whatever is matched by the first (.*) 
$2 is a reference to (\?|&) 
$4 is a reference to the second (.*) 

$countries = 'IN,US,AU,MY,TH,KR,TW'; 
$countries = explode(',',preg_replace('/([A-Z]{2})/', "'$1'", $countries)); 
print_r($countries); 

OUTPUT

アレイ([0] = '' [1] => 'US' [2] => 'AU' [3] => 'MY' [4] => 'TH' [5] => 'KR' [6] = > 'TW')

REF:http://uk.php.net/manual/en/function.preg-replace.php

0

アレイ([0] => 'IN' [1] => 'U S '[2] =>' AU '[3] =>' MY '[4] =>' TH '[5] =>' KR '[6] =>' TW ')

あなた以下のように行うことができます。

$countries='IN,US,AU,MY,TH,KR,TW';  //list country codes separated by comma 
$countries= explode(',',$countries);  //partition from , 
$countries= "'".implode("','",$countries)."'";  

$countries=explode(',',$countries);   //create array by breaking it from , 
print_r($countries); 
0

をあなたは

$countries='IN,US,AU,MY,TH,KR,TW';  
$countries=explode(',',$countries);  
$countries2 = array_map(function($val) { return "'".$val."'";} , $countries); 
print_r($countries2); 

OUTPUT

配列([0] => 'IN' と同じようにこれを行うことができます[1] =>「米国'[2] =>' AU」[3] => 'MY' [4] => 'TH' [5] => 'KR' [6] => 'TW')の実施例に

0
<?php 
$countries='IN,US,AU,MY,TH,KR,TW'; 
$countries = preg_replace("/(\b)/", "'$1", $countries); 
$countries = explode(",", $countries); 
Var_dump($countries); 
?> 

リンク: あなたが好きな正規表現を使用することができます http://www.phpliveregex.com/p/ff7

+0

"'$ 1'"は何をしますか? –

+0

これは、preg_replaceに検索一致の前に 'を追加するよう指示します。一致はpreg_replaceで$ 1と呼ばれます – Andreas

+0

@kpatil答えに何か間違いがありますか? – Andreas

0

にpreg_replaceように変更することを忘れないでください:正規表現の置き換えに

$countries = 'IN,US,AU,MY,TH,KR,TW'; 
$countries = preg_replace('/([A-z]{2})/', "'$1'", $countries); 
$countries = explode(',',$countries); 
+0

私は速かった;-) – Andreas

+0

"'$ 1'"は何をしますか? –

+0

$ 1正規表現内の()の間のマッチを意味します。正規表現が1つ以上あれば()、()、$ 2の最初のマッチに$ 1を使用できます。数字は$ 0〜$ 99です。 preg_replaceはhttp://php.net/manual/en/function.preg-replace.phpにあります。 –