使用php在文本文件中用单个(CRLF)替换(CR)和(LF)的任何组合

时间:2017-01-02 22:28:33

标签: php regex preg-replace str-replace

在不同的文本文件中(或在单个文本文件中)我有不同的行尾组合(参见下面的示例)。

如何使用一个简单的CRLF统一CR和LF的所有组合? 简而言之,我需要使用PHP将一个CRLF替换为每个CR和LF组合。 使用str_replace我可以替换它们,但我的问题是使用正确的搜索字符串。

Sub IncrementByVal(ByVal inp As Integer)
  inp = inp + 1
End Sub

Sub IncrementByRef(ByRef inp As Integer)
  inp = inp + 1
End Sub

Sub Test()
  Dim X As Integer
  X = 1
  IncrementByVal X  ' x is still 1  - the increment was for a locally scoped variable only
  IncrementByRef X  ' x is now 2
End Sub

要修复的通用文本文件示例:

$textfile=str_replace("search string i need","CRLF to replace", $textfile);

我需要用\ r \ n替换所有\ r \ n随机组合,如下所示:

text line 1 CRLFLFCRCRLF
text line 2 LFLFCRLFCRCR
text line 3 CRLF
text line 4 CR
text line 5 LF

3 个答案:

答案 0 :(得分:1)

你真的不需要正则表达式:

str_replace(["\r\n", "\r", "\n"], "\r\n", $str);

这将替换数组中的每个字符串(并保留顺序,因此,如果您有\r\n,则不会将其替换为\r\n\r\n)。

答案 1 :(得分:1)

PCRE具有任何换行组合的别名:\R

你可以这样做:

$text = preg_replace('~\R~', "\r\n", $text);

默认情况下,\R匹配CR,LF或CRLF,但如果要将\R的含义扩展到任何unicode换行序列,请使用u修饰符:

$text = preg_replace('~\R~u', "\r\n", $text);

答案 2 :(得分:1)

替换' \ r \ n'的所有组合用' \ r \ n'使用方法:

$result = preg_replace('/[\r\n]+/', "\r\n", $text);

这也将取代单曲' \ r'或者' \ n'与' \ r \ n'。