2016-09-27 37 views
0

我正在寻找一个例子来替换我的所有空间到“内联”我认为在英语中它是换行符。preg_replace/str_replace:内联/换行

这是我的CSV文件的为例:

"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()'的东西解析它。然后,一旦将数据存储在数组中,就可以直接打印任何您想要的数据。使用正则表达式可能会在某些情况下工作,但可能会在其他情况下中断,所以最好直接处理CSV。 –

回答

2

你只需要通过<br>更换换行符(即\r\n):

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

\R代表任何类型的换行符。
因为不需要它,因为在for循环$tableau[$i]相同$row

+0

感谢您的帮助和解释! –

+0

@ A.Rouze:“你不是一个蠢货。 » – Toto

0

编辑: 您可以achive你的结果这样也

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