2011-11-15 11 views
1

カンマ区切りの部分的な設定の文字列を取得しようとしています。文字列の各行の先頭と末尾に引用符やその他のマークを付ける必要があります。問題の文字列には以下のような行があります。 IEPHPの文字列の各行の先頭と末尾に二重引用符を追加する方法

2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 

は、私は多くの正規表現の試みを試してみました

"2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres" 

に変えられることですが、私は正規表現を理解する上で非常に貧弱だということを認めざるを得ません。

+0

このサイトはあなたに役立つかもしれません... Rad Software正規表現デザイナー - http://www.radsoftware.com.au(正規表現をテストするツール) – Bryan

答えて

1

.が改行と一致しないという事実を悪用することができます。

$result = preg_replace('/(.+)/', '"$1"', $subject); 
+0

チャームのように働いた。私は決してそれを持っていないでしょう。 – Wes

1

文字列が複数行であると仮定しますか? 、けれども

<?php 
$newstring = '"'.str_replace("\n", "\"\n\"",$string).'"'; 

は私は、ちょうどそれぞれの行を含む新しい配列を作成するには、このような何か誘惑されるだろう:

<?php 
$string = '2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres'; // obviously use a string with multiple lines, but i'm just taking your example 

$array = preg_split('/\n+/', $string, -1, PREG_SPLIT_NO_EMPTY); 
foreach($array as $k=>$v){ 
    $array[$k]='"'.$v.'"'; 
} 

print_r($array); 

するか、私はあなたがいつも同じようなものを使用することができsupose 2番目の方法では、 "\ r"や "\ r \ n"も考慮する必要があります。

+0

これは私が思っていたものでしたが、この問題を解決するpreg_replace(正規表現)がありました。そして、はい、それは複数行の文字列です。 – Wes

+0

私の答えはちょっと考えて更新しました。 2番目の方法では、必要なものだけでも十分です。 – Nick

+0

ありがとうございます。あなたの答えは非常に便利です。以下の答えは、私が正しいとマークしたので、より良いと思う。複数のソリューションに対して+1してください。これは確かに他の人を助けるでしょう。 – Wes

0

あなたの文字列の場合:

2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 

そして、あなたはあなただけはstrtrを使用することができ初めと各行の末尾に二重引用符が必要になります。

$sLines = "2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres 
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres"; 

$arrTr = array(); 
$arrTr1 = array(); 
$arrTr[chr(13)] = '"'.chr(13).'"'; 
$arrTr1["\"\n"] = '"'; 

$sLines = strtr(strtr($sLines,$arrTr),$arrTr1); 

$sLines = '"'.$sLines.'"'; 
echo '<pre>'; 
print_r($sLines); 
echo '</pre>'; 

しかし、あなたの場合行を "\ n"文字で貼り付けてください。

$sLines = "2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres"; 

$arrTr = array(); 
$arrTr1 = array(); 
$arrTr["\n"] = '"'."\n".'"'; 

$sLines = strtr($sLines,$arrTr); 

$sLines = '"'.$sLines.'"'; 
echo '<pre>'; 
print_r($sLines); 
echo '</pre>'; 
関連する問題