如何使用PHP或regex修剪每行开头和结尾的空白
如何使用PHP或regex修剪每行开头和结尾的空白 比如说,如何使用PHP或regex修剪每行开头和结尾的空白,php,regex,whitespace,trim,Php,Regex,Whitespace,Trim,如何使用PHP或regex修剪每行开头和结尾的空白 比如说, $text = "similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga "; 应该是, $text = "similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolo
$text = "similique sunt in culpa qui officia
deserunt mollitia animi, id est
laborum et dolorum fuga
";
应该是,
$text = "similique sunt in culpa qui officia
deserunt mollitia animi, id est
laborum et dolorum fuga
";
我添加了testarea,因此您可以清楚地看到换行符第一个解决方案:
使用换行符拆分原始字符串,在每个标记上使用,然后重新生成原始字符串
第二种解决方案:
使用正则表达式替换此正则表达式\s*\n\s*并使用替换。对于此任务,使用正则表达式肯定更快。但是,如果您喜欢嵌套函数,那么所有行中也会出现空白:
$text = join("\n", array_map("trim", explode("\n", $text)));
马里奥的解决方案效果很好(谢谢你让马里奥救了我一天)。也许有人能解释为什么我后来检查跨平台兼容线路中断,比如
(strstr($text, PHP_EOL))
即使存在换行符,也设置为FALSE
无论如何,将“\n”更改为PHP\u EOL解决了以下问题:
$text = join(PHP_EOL, array_map("trim", explode(PHP_EOL, $text)));
您可以使用开关和preg_replace
功能将其替换为零:
$text = trim(preg_replace('/(^\h+|\h+$)/mu', '', $text));
如果需要在文件中保留空白,请删除
trim
或替换为ltrim
函数这里是另一个在每行开始和结束处修剪空白的正则表达式
$text = preg_replace('/^[\t ]+|[\t ]+$/m', '', $text);
请参见谢谢,但是当我有多个换行符时,我对这个正则表达式和另一个正则表达式有问题-
$text=preg\u replace(“/(\r\n){3,}/”,“\r\n\r\n”,trim($text))代码>-使用您的正则表达式,我无法再修剪多个换行符。。。为什么?我认为我的正则表达式只适用于您提供的示例,换行符在我的方法中丢失,然后被替换。您最好使用@mario的解决方案-它更健壮,可能更高效。正则表达式更快?我用你的方法测试了我的正则表达式(/[\t]+$/m
)(只是用PHP\u EOL
而不是“\n”),它大约慢了5倍(在~900个字符的字符串上进行1000次迭代,22,4ms比4,3ms)。这个正则表达式已经比这里的其他正则表达式快了两倍,因为它只删除尾随的空格。。
$text = preg_replace('/^[\t ]+|[\t ]+$/m', '', $text);