2

我需要将第一列和第二列以及第二列和第三列之间的空格替换为\t仅。

0101 A 01/13/13
0102 F 04/05/13
0209 C 04/19/13

但是我在这样做时遇到了麻烦,它将所有内容放在一行中并写出来\t

preg_replace('/(?:^|\s)/', '\t', $text);

它是这样打印出来的......

\t0101\tA\t01/13/13\t\t ....

我怎样才能以正确的格式正确获取它?

任何帮助表示赞赏。

4

3 回答 3

5

如果您的数据是这样的严格格式,为什么不呢

preg_replace('/\s+(.)\s+/', "\t$1\t", $text);
于 2013-10-19T02:03:56.053 回答
3

只需搜索文字空间并替换为\t... 除非您的数据变化不止于此,否则没有(?:)必要。

还有其他空间吗?有更多的列吗?

preg_replace('/ /',"\t", $text);

如果我制作一个 test.php 文件:

<pre>
<?php 
$t="0101 A 01/13/13\n0102 F 04/05/13\n0209 C 04/19/13"; 
printf(preg_replace('/ /',"\t",$t));  
?> </pre> 

它生成:

0101    A   01/13/13
0102    F   04/05/13
0209    C   04/19/13 
于 2013-10-19T01:53:56.627 回答
1
echo(preg_replace('/ /','\t','str str')."\n");//使用【''】,结果为:【str\tstr】,无效。
echo(preg_replace('/ /',"\t",'str str')."\n");//使用【""】,结果为:【str str】,有效。
于 2020-03-08T17:22:17.753 回答