我正在用PHP写作!
有一个用户字符串输入,我想切断所有新行,1个连续超过1的字符(避免<br /><br />
...)。
示例:
I am a
SPaMmEr!
会变成:
I am a
SPaMmEr!
或
I am a
.
.
.
.
SPaMmEr!
同样
答案 0 :(得分:2)
以这种方式完成所有行(如果你想捕获dos,mac和unix换行符):
$lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $string));
可以使用preg_grep()
$lines = preg_grep('/^.{2}/', $lines);
或者使用正则表达式来完成整个过程:
preg_match_all('/^.{2}.*$/', $string, $matches);
$lines = $matches[0];
或者,如果您不需要包含所有剩余行的数组,则可以通过一次调用删除不需要的字符串:
$string = preg_replace('/^.?$\n/m', '', $string);
答案 1 :(得分:0)
这个怎么样:
$str = str_replace(array("\n", "\r"), '', $str);
$ str是您的用户输入。
修改强>:
很抱歉,此代码将删除所有行,无论如何,仍然可以派上用场。
答案 2 :(得分:0)
\ n是换行符的有效输入,以及\ r \ n和\ n \ r \ n。运行Regex或str_replace以将\ r和\ n的所有组合替换为\ n,并且可以使用use explode(“\ n”,$ string),并检查数组中的所有项目是否为一个字符或空字符。 您可以删除它们,或者用重复的char的单个实例替换它,例如我使用一个换行符换一个新段落,所以它会破坏这个段落。
答案 3 :(得分:0)
为什么不使用正则表达式:
## replace 1 or more new line symbols with single new line symbol
$empty_lines_trimmed = preg_replace('"(\r?\n)+"', "\n", $empty_lines);