2012-08-07 68 views
5

我有一个CSV我从我没有的控制和每一行的端部的源下载是PHP删除Windows^M字符

^M 

字符时打印到一个bash终端。我如何在PHP中以编程方式清理此输入?

回答

15

你看到的是一个Windows控制字符。为了摆脱这个在PHP中,你需要做的是 $file = str_ireplace("\x0D", "", $file) 这将工作无论是十六进制是小写还是大写。

+0

宾果 - 做了诡计 – nsfyn55 2012-08-07 19:10:05

3

^Mcarriage return,你应该能够用其删除:

$string = str_replace("\r", "", $string); 
1

您也可以要求PHP自动读取CSV文件之前刚刚在这条线将检测任何奇怪的行尾和你将不需要做其他事情。

ini_set('auto_detect_line_endings', true); 
+0

有效的方法,但没有为我工作,这有点奇怪。我最终用linux chars取代了win:preg_replace('〜\ r \ n?〜',“\ n”,$ string); – 2018-02-02 12:50:21

+0

好吧,我认为你可能有一个不同的操作系统来挖掘。我使用的是Mac,所以它可能不适用于所有操作系统。如你所说,这很奇怪。 – ksoni 2018-02-03 09:40:14