我想要构建一个PHP字符串替换/正则表达式函数,它需要一个字符串与换行符和空格的任何序列,并将其替换为单线进给。如何用一个换行符替换包含任何换行符和空格序列的字符串
这是可能的,如果是这样,它将如何完成?
我想要构建一个PHP字符串替换/正则表达式函数,它需要一个字符串与换行符和空格的任何序列,并将其替换为单线进给。如何用一个换行符替换包含任何换行符和空格序列的字符串
这是可能的,如果是这样,它将如何完成?
*是*一个很好的资源,但OP是问一个具体的问题,你没有回答它。 – 2011-03-15 20:07:52
我认为这样做很简单,学习基础知识。 – slezica 2011-03-15 21:34:54
确实如此,但是这个答案的总体增加了多少值,无论是对于这个Q&A还是StackOverflow呢?特别是在这种情况下,该特定网站似乎每天至少推荐一次。 – 2011-03-15 22:36:45
你可以尝试:
= preg_replace('/\s*[\r\n]+\s*/', "\n", $text);
它会寻找出一个单一的CR或LF检测Unix,Windows和旧的Mac换行符。之后,任何空格(空格,制表符,CR,LF)将被删除。
\s*
以忽略前一行的空格。\s*
也可以是[\r\n ]*
。另请参见https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world如果你想完善这个正则表达式。
如果空间/符可以来以任何顺序和任何潜在的操作系统,那么这将是一个试探性的方法:
$fixed_string = preg_replace('/[\s\n\r]+/', "\n", $bad_string);
它会寻找一个或更多的空白(\ S) ,换行符(\ n)和回车(\ r)字符,并用换行符替换它们。
在PHP中,'\ s'等同于'[\ t \ f \ r \ n]',所以正则表达式中的'[\ s \ r \ n]'可能只是'\ s'。另外,我认为OP只想匹配其中至少有一个换行符的序列,并且您没有执行该操作。 – 2011-03-15 19:54:11
Marc B - 完美的作品。多谢!和艾伦摩尔,你是对的,我从这两个解决方案得到的结果是相同的。 – Glenn 2011-03-17 14:37:19
现在我需要找到一个解决方案,它将使用'\ n'替换所有空白区域,但只有在空白区域存在'\ n'时才会使用'\ n'。我怀疑这不是一个正则表达式问题(但如果我错了,请纠正我)。再次感谢您的帮助! – Glenn 2011-03-17 14:43:13
你有一个输入字符串的例子,你期望输出看起来像什么? – 2011-03-15 18:33:07
任何空格和换行符序列都应该成为一个换行符?空格=>换行? – 2011-03-15 18:35:45