2017-01-09 5 views
1

私は動的PHP配列$ lineを生成しています。preg_replacement()for PHP配列

echo "<pre>",print_r($line,1),"</pre>"; 

配列はこの形式です。私は必要なもの

"AARON, ELVIA J",WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00

Arrayこの

echo "<pre>",print_r($line,1),"</pre>"; 

AARONELVIAJ,WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00 

何私が行っていたようにする必要があります:?

 $re1='(")'; # Any Single Character 1 
     $re2='((?:[a-z][a-z]+))'; # Word 1 
     $re3='(,)'; # Any Single Character 2 
     $re4='(\\s+)'; # White Space 1 
     $re5='((?:[a-z][a-z]+))'; # Word 2 
     $re6='(\\s+)'; # White Space 2 
     $re7='.*?'; # Non-greedy match on filler 
     $re8='(")'; 

     $reg1="/".$re1.$re2."/"; 
     $reg2="/".$re3.$re4."/"; 
     $reg3="/".$re5.$re6.$re7.$re8."/"; 
     $line = preg_replace("/".'($reg1)$reg2($reg3)'."/", "$1$2", $line);//this is also generating the same array "AARON, ELVIA J",WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00 
     echo "<pre>",print_r($line,1),"</pre>"; 

     $pattern="/".$re1.$re2.$re3.$re4.$re5.$re6.$re7.$re8."/"; 
     $replacement="/".$re2.$re5.$re7."/"; 

     $values = preg_replace($pattern, $replacement, $line); 
     $values = explode(',',$line); 
     echo "<br>"; 
     $values =preg_replace('/[^A-Za-z0-9\-]/', '', $values); 
     $values=implode(',',$values); 
     echo "<pre>",print_r($values),"</pre>"; 
     echo "<pre>",print_r($values,1),"</pre>"; 

を私は取得していますどのようなことは、このようなものです:

AARON,ELVIAJ,WATERRATETAKER,WATERMGMNT,8100000,73862001 

誰かが解決

+1

あなたがあるarray_walkまたはarray_mapをを使用したほうが良いかもしれませんそれを出力しようとする前に、配列内のすべての要素に書式設定関数を適用します。 – GordonM

+0

私はarray_mapを試しましたが、これは必要な結果を提供していません。また、AARON、ELVIAJ、WATERRATETAKER、WATERMGMNT、8100000,73862001 – Manasa

答えて

1

str_getcsv()機能は完全にあなたのためにこれを行います。この

$line = '"AARON, ELVIA J",WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00'; 
    $pieces = explode('"', $line); 

    $result = ''; 
    foreach ($pieces as $value) { 
    if(substr($value, 0, 1) === "," || substr($value, -1) == ','){ 
     $result .= $value; 
    }else{ 
     $value = str_replace(',', '', $value); 
     $result .= str_replace(' ', '', $value); 
    } 
} 
echo $result; 
+0

のような結果を与えています。その動作は完全です。ありがとうございました – Manasa

+0

同じ配列を複数生成しています回 – Manasa

+0

私はそれを理解しています。$行は配列の要素ですか? – Ruby

0

を試してみてください見つけるために私を助けてください。

$result = str_getcsv($line); 

は与える:

Array 
(
    [0] => AARON, ELVIA J 
    [1] => WATER RATE TAKER 
    [2] => WATER MGMNT 
    [3] => $81000.00 
    [4] => $73862.00 
) 

をあなたは本当に、あなたが追加することができ、名前からスペースやカンマを削除する場合:

$result[0] = preg_replace('/\s+|,/', '', $result[0]);