【发布时间】:2023-04-03 07:38:02
【问题描述】:
我正在使用这个正则表达式来删除空行:
(^[\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);
但还是有问题
【问题讨论】:
-
有什么问题?它有什么作用,你想让它做什么?
-
这可能正是您想要的(更简单,所以告诉我它是否有效,我会发布一个带有解释的答案):
\v$ -
@AndyLester 我已经更新了问题
-
@Sam 有没有办法避免替换后的空格?
-
@Dheed 看看我的回答。它适用于您的示例。