Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式删除新行和空格_Php_Regex_Replace_Match - Fatal编程技术网

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)。