【问题标题】:preg_replace / str_replace : Inline / line breakpreg_replace / str_replace :内联/换行
【发布时间】:2016-09-27 09:35:33
【问题描述】:

我正在寻找一个例子来将我的所有空格替换为“内联”,我认为用英语它是换行符。

这是我的 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);

这是错误的,我认为这是一个很大的错误。

谢谢

【问题讨论】:

  • “内联”是什么意思?你能发布一个结果应该如何的例子吗?
  • 您在我的帖子中看到了我的结果:例如,我的所有行都以“654xxx”之类的数字开头。如您所见,这一行:“Q A PARTIR DU 17/04/16 (NE CIRCULE PAS 29,30,31/10/16) 6543946”是 CSV 文件中的最后一行。我们可以在这一行旁边找到我的号码“654xxx”。我需要在我的行下面有我的号码,如下所示:(Q A .... NE CIRCULE PAS...)
    换行符 \n,654xxx。我希望你能理解(如果不正确我会编辑)
  • 嗯,你目前有结构化的 CSV 数据,所以我会利用它并使用类似 str_getcsv() 的东西来解析它。然后,一旦您将数据放入数组中,就可以轻松地以任何您想要的方式打印它。使用 Regex 在某些情况下可能会起作用,但在其他情况下可能会中断,因此最好直接处理 CSV。
  • 谢谢,我会试试这个解决方案。

标签: php regex csv preg-replace str-replace


【解决方案1】:

您只需将换行符(即\r\n)替换为&lt;br&gt;

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

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

【讨论】:

  • 感谢您的帮助和解释!
  • @A.Rouze:« Il n'y a pas de quoi。 »
【解决方案2】:

编辑: 您也可以通过这种方式获得结果

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

【讨论】:

  • 好的,我正在测试,结果是一样的。我在我的“id”号“654xxx”之前搜索如何换行
  • 你为什么要转义双引号?这与 OP 有何不同?
  • 不,对不起我的英语......“这是结果......”这似乎是我向用户展示的内容。你可以看到上面的解决方案。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多