【问题标题】:Remove trailing lines with php preg_replace使用 php preg_replace 删除尾随行
【发布时间】:2012-05-30 10:38:44
【问题描述】:

我知道在@this post 之前有人问过这个问题,但我也想在最后去掉空行。

我正在使用:

function removeEmptyLines($string)
{
return preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $string);
}

在任何组合中效果都很好,但是:

 aadasdadadsad
 adsadasdasdas
 (empty line here)

我正在尝试对返回的数组执行 count(),但由于它将 \n 替换为 \n\,因此它不起作用。我在上面的帖子中尝试了其他一些示例,但都没有成功。

我的其他功能(到目前为止)

function checkEmails($value) {

$value = removeEmptyLines($value);

$data = explode("\n", $value);
$count = count($data);

return $count;

 }

基本上它是一个表单的文本区域发布到它自己,如果有人在整行之后点击回车,它仍然计算空白行。

任何帮助将不胜感激,

谢谢!

特雷

【问题讨论】:

  • 你不是想发明一个等效的 ltrim 函数吗?

标签: php preg-replace eol


【解决方案1】:

PHP 的trim 函数默认执行此操作:

$string = trim($string);

如果您只想从字符串的开头或结尾剥离,也可以使用ltrim()rtrim()

【讨论】:

    【解决方案2】:

    试试:

    preg_replace('/^[\r\n]+|[\r\n]+$/m', '', $string);
    

    See it working

    如果您还想从行中去除前导/尾随空格,请将[\r\n] 的两个出现替换为\s。另请注意,我将表达式字符串用单引号括起来这一事实很重要。

    【讨论】:

      【解决方案3】:

      你可以改用

      rtrim($string, "\n");
      

      【讨论】:

      • 你不能单引号\n,所以这只有在你双引号的情况下才有效。问题中的代码剥离了更多的字符,而不仅仅是 \n
      猜你喜欢
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2011-04-01
      • 2016-03-19
      • 1970-01-01
      • 2011-06-05
      相关资源
      最近更新 更多