Php 正则表达式删除新行和空格
我创建了一个正则表达式来去除空格、制表符、新行等Php 正则表达式删除新行和空格,php,regex,replace,match,Php,Regex,Replace,Match,我创建了一个正则表达式来去除空格、制表符、新行等 (^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+ 我的问题是,它匹配一些空格和一些新行,而不是所有空格和新行。为什么呢 我试过: (^[\r\n]*|[\r\n]+)[\s\t+]*[\r\n]+ 但似乎仍然不匹配多个空格 我不太确定您希望在这里实现什么。但是,如果你,正如你在问题中所说的那样,**你所要做的就是什么都不替换\s。看见(为清晰起见,替换为*) 正则表达式的问题是(除了过于复杂;)结尾[\r\n]+需要一个CR/
(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+
我的问题是,它匹配一些空格和一些新行,而不是所有空格和新行。为什么呢
我试过:
(^[\r\n]*|[\r\n]+)[\s\t+]*[\r\n]+
但似乎仍然不匹配多个空格
我不太确定您希望在这里实现什么。但是,如果你,正如你在问题中所说的那样,**你所要做的就是什么都不替换
\s
。看见(为清晰起见,替换为*
)
正则表达式的问题是(除了过于复杂;)结尾[\r\n]+
需要一个CR/LF和,如果该行前面没有空行(^[\r\n]
匹配以换行符开头的行-即空行),则第一行中的[\r\n]+
也需要CR/LF
简而言之,它永远不会匹配两个连续的非空的行
关于。这将消除空白:
^(?:\s*)(\w+)$
使用多行和全局修改器(gm)
如果这解决了你的问题,请将问题标记为已解决
$input_lines = <<<EOD
test
aeee
eeeee
EOD;
$output = preg_replace('/(\s)*/', '$1', $input_lines);
var_dump($output);
如果我想删除所有换行符
$output = preg_replace('/(\s)*/', '', $input_lines);
var_dump($output);
结果:
string(16) "
test
aeee
eeeee"
string(13) "testaeeeeeeee"
. 还有什么地方可以听你的雷鬼音乐?@ChristianStewart safari上的自动更正haha@Tushar也许还应该包括\t?那么我需要对第一段中提到的正则表达式进行哪些更改,您应该使用的只是
\s
。查看Tushar对您的问题的评论。但它似乎与换行符不匹配。您必须使用单行修饰符s
(php中的PCRE_DOTALL)。