2011-03-15 52 views
1

我想要构建一个PHP字符串替换/正则表达式函数,它需要一个字符串与换行符和空格的任何序列,并将其替换为单线进给。如何用一个换行符替换包含任何换行符和空格序列的字符串

这是可能的,如果是这样,它将如何完成?

+0

你有一个输入字符串的例子,你期望输出看起来像什么? – 2011-03-15 18:33:07

+1

任何空格和换行符序列都应该成为一个换行符?空格=>换行? – 2011-03-15 18:35:45

回答

-1

试试这个:

http://www.regular-expressions.info/tutorial.html

大源材料!

+1

*是*一个很好的资源,但OP是问一个具体的问题,你没有回答它。 – 2011-03-15 20:07:52

+0

我认为这样做很简单,学习基础知识。 – slezica 2011-03-15 21:34:54

+0

确实如此,但是这个答案的总体增加了多少值,无论是对于这个Q&A还是StackOverflow呢?特别是在这种情况下,该特定网站似乎每天至少推荐一次。 – 2011-03-15 22:36:45

1

你可以尝试:

= preg_replace('/\s*[\r\n]+\s*/', "\n", $text); 

它会寻找出一个单一的CR或LF检测Unix,Windows和旧的Mac换行符。之后,任何空格(空格,制表符,CR,LF)将被删除。

  • 但是,我会删除第一个\s*以忽略前一行的空格。
  • 如果您想保留\ tabs,最后的\s*也可以是[\r\n ]*

另请参见https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world如果你想完善这个正则表达式。

1

如果空间/符可以来以任何顺序和任何潜在的操作系统,那么这将是一个试探性的方法:

$fixed_string = preg_replace('/[\s\n\r]+/', "\n", $bad_string); 

它会寻找一个或更多的空白(\ S) ,换行符(\ n)和回车(\ r)字符,并用换行符替换它们。

+1

在PHP中,'\ s'等同于'[\ t \ f \ r \ n]',所以正则表达式中的'[\ s \ r \ n]'可能只是'\ s'。另外,我认为OP只想匹配其中至少有一个换行符的序列,并且您没有执行该操作。 – 2011-03-15 19:54:11

+0

Marc B - 完美的作品。多谢!和艾伦摩尔,你是对的,我从这两个解决方案得到的结果是相同的。 – Glenn 2011-03-17 14:37:19

+0

现在我需要找到一个解决方案,它将使用'\ n'替换所有空白区域,但只有在空白区域存在'\ n'时才会使用'\ n'。我怀疑这不是一个正则表达式问题(但如果我错了,请纠正我)。再次感谢您的帮助! – Glenn 2011-03-17 14:43:13

相关问题