2016-09-27 12 views
0

私はすべての私のスペースを "インライン"に置き換えるための例を探しています。英語では改行と思います。preg_replace/str_replace:インライン/改行

この私のCSVファイルのexemple:

"6543945";"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";"5017";"EnginSouhaite";"D";"1";"ne circule pas" 
"6543945";"1111111111111111111111111111111111111111111111111100001010000101000010100001010000101000010100001010000101100010100001010000101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110001111111111111111111111111111111111111111000000000000000000000000000000000000";"5017";"EnginSouhaite";"D";"1";"Q JUSQU'AU 30/01/16 ; VE DF DU 31/01 AU 15/04/16 ; Q A PARTIR DU 17/04/16 (NE CIRCULE PAS 29,30,31/10/16)" 
"6543946";"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";"5017";"EnginSouhaite";"D";"1";"ne circule pas" 
"6543946";"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";"5017";"EnginSouhaite";"D";"1";"ne circule pas" 
"6543945";"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";"5017";"EnginSouhaite";"D";"2";"ne circule pas" 
"6543946";"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";"5017";"EnginSouhaite";"D";"2";"ne circule pas" 

まず、私はそのような、スペース( '')にすべての私の '/ "/' を置換することを決定した:

foreach($tableau as $row) { 

    $replace = preg_replace('/"/', ' ', $tableau[$i]); 

    echo $replace; ?> <br/> <?php 

    $i += 1; 
} 

これを結果は次のとおりです。

6543945 
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 
5017 
EnginSouhaite 
D 
1 
ne circule pas 6543945 
1111111111111111111111111111111111111111111111111100001010000101000010100001010000101000010100001010000101100010100001010000101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110001111111111111111111111111111111111111111000000000000000000000000000000000000 
5017 
EnginSouhaite 
D 
1 
Q JUSQU'AU 30/01/16 
VE DF DU 31/01 AU 15/04/16 
Q A PARTIR DU 17/04/16 (NE CIRCULE PAS 29,30,31/10/16) 6543946 

あなたが見ることができるように、私が欲しい(と私は好む)インラインを行うには、あなたが「654XXX」のようないくつかの数が隣接している見ることができますので。 "ne circule pas"、そして私にとっては、これらの数字はインラインである必要があります。

誰でも解決策がありますか?私はこのような何かをテストした:

$replace2 = preg_replace(' ', '/$\n/',$replace); 

これは間違っている、と私は大きな間違いだと思う。編集

おかげ

+0

あなたは「インライン」とはどういう意味ですかと同じであるために必要とされていないよう
私も$iの使用を削除しますか?結果をどのように表示するかの例を投稿できますか? –

+0

あなたは自分の投稿で私の結果を見ています。例えば、すべての行は "654xxx"のような数字で始まります。ご覧のとおり、この行は、「Q PARTIR DU 17/04/16(NE CIRCULE PAS 29,30,31/10/16)6543946」がCSVファイルの最後の行です。そして、私はこの行の隣に私の番号 "654xxx"を見つけることができます。私はこのように自分の番号の下に番号を入れる必要があります:(Q A .... NE CIRCULE PAS ...)
*改行* \ n、654xxx。 –

+1

ええと、現在CSVデータが構造化されているので、それを利用して 'str_getcsv()'のようなものを使って解析します。その後、データを配列に格納したら、必要な方法で簡単に印刷できます。 Regexの使用は場合によっては機能するかもしれませんが、他のアプリケーションでは壊れる可能性があるので、直接CSVを扱うほうがよいでしょう。 –

答えて

2

あなたの結果をachiveすることができますあなただけ<br>で改行(すなわち\r\nを。)交換する必要があります。

foreach($tableau as $row) { 
    $replace = preg_replace('/"/', ' ', $row); 
    $replace = preg_replace('/\R/', '<br>', $replace); 
    echo $replace, '<br>'; 
} 

\Rは、あらゆる種類の改行を表します。ループ$tableau[$i]ため$row

+0

ご協力ありがとうございます! –

+0

@A.Rouze:«私はパズデュウォイです。 » – Toto

0

: あなたはこのようにも

foreach($tableau as $row) { 
    $replace = preg_replace('/"/', ' ', $row);   
    $replace_arr = explode (';',$replace); 
    foreach ($replace_arr as $key=>$val){ 
     echo $val."<br />"; 
    } 
} 
+0

さて、私はそれをテストしており、結果は同じです。私はどのように私の "ID"番号、 "654xxx"の前に改行を検索 –

+0

"これは結果です:...." - あなたの期待された結果は、そうですか? – Naga

+0

なぜ二重引用符をエスケープしていますか?これはOPとどう違うのですか? – Toto