在不同的文本文件中(或在单个文本文件中)我有不同的行尾组合(参见下面的示例)。
如何使用一个简单的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
答案 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'。