dtw*_*woo 2 php regex string str-replace
我有一个采用以下格式的字符串(请注意,每个单词之间和每一行开头之间的随机数都是空格):
1。英国航空15FEB伦敦香港2。国泰航空01MAR HONGKONG SHANGHAI
3。澳洲航空12MAR澳大利亚悉尼
我希望输出是
1。英国航空15FEB伦敦香港 2。国泰航空01MAR HONGKONG SHANGHAI 3。澳洲航空12MAR澳大利亚悉尼
我有以下代码
$flightinfo = preg_replace('/\h+/', ' ', $flightinfo);
$flightinfo = trim($flightinfo);
$flightinfo = str_replace("\r\n\r\n","\r\n",$flightinfo);/* checks and removes double line breaks if they're there.
Run Code Online (Sandbox Code Playgroud)
但这给出了以下内容,这几乎是正确的,但是在第2行和第3行的开头是空白
1。英国航空15FEB伦敦香港 2。国泰航空01MAR HONGKONG SHANGHAI 3。澳洲航空12MAR澳大利亚悉尼
任何人都知道如何在第2行和第3行的开头删除空白
您可以使用单个正则表达式替换来实现所需的功能:
$flightinfo = preg_replace('~^\h+|\h+$|(\R){2,}|(\s){2,}~m', '$1$2', $flightinfo);
Run Code Online (Sandbox Code Playgroud)
参见regex演示。
细节
^\h+
-行首处的任何1个或多个水平空白(^
由于m
修饰符,匹配行首)|
- 要么\h+$
-行尾的任何1个或多个水平空格($
由于m
修饰符,与行尾匹配)|
- 要么(\R){2,}
-2个或更多的换行序列将最后一个捕获到组1中|
- 要么(\s){2,}
-2个或更多空格将最后一个空格捕获到第2组中替换是对组1和2的替换反向引用。
参见PHP演示:
$re = '/^\h+|\h+$|(\R){2,}|(\s){2,}/m';
$flightinfo = ' 1 . BritishAirways 15FEB LONDON HONGKONG
2 . CathayPacific 01MAR HONGKONG SHANGHAI
3 . Qantas 12MAR SINGAPORE SYDNEY';
$flightinfo = preg_replace($re, '$1$2', $flightinfo);
echo $flightinfo;
Run Code Online (Sandbox Code Playgroud)
输出:
1 . BritishAirways 15FEB LONDON HONGKONG
2 . CathayPacific 01MAR HONGKONG SHANGHAI
3 . Qantas 12MAR SINGAPORE SYDNEY
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1855 次 |
最近记录: |