我正在使用此正则表达式删除空行:
(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+
在php中:
$search = array(
'@( |\t|\f)+@', // Shorten multiple whitespace sequences
'@^\s+|\s+$@', // Trim lines
'@(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+@' //Remove blank lines
);
$replace = array(' ','',"\r\n");
$string = preg_replace($search, $replace, $string);
但是我特别对这段代码有些问题:
原文:
<script type="text/javascript">
//<![CDATA[
iCart.init({
title: 'Aggiungi',
cart: 'Carrello',
....
</script>
更换后:
<script type="text/javascript">
//<![CDATA[iCart.init({
title: 'Aggiungi',
cart: 'Carrello',
....
</script>
我试图获得:
<script type="text/javascript">
//<![CDATA[
iCart.init({
title: 'Aggiungi',
cart: 'Carrello',
....
</script>
我已经用regex101(FIDDLE)做了一些测试,它给了我正确的结果,但我无法在真实的环境中实现同样的目标
的修改
更改查找正则表达式(修剪创建了一些问题):
$search = array(
'@( |\t|\f)+@', // Shorten multiple whitespace sequences
'@^\s+|[ \t]+$@gmi' //Remove blank lines
);
$replace = array(' ','');
$string = preg_replace($search, $replace, $string);
但仍然有问题
答案 0 :(得分:4)
我认为这就是你想要的:^\s+
使用:强>
$string = preg_replace('/^\s+/m', '', $string);
<强>解释强>
^
使用m
多行修饰符锚定到新行的开头\s+
找到1个以上的空格([\r\n\t\f ]
)字符;这可能是一个完整的空行或只是前面的缩进