【问题标题】:Regex : Removing all extra whitespace, line-breaks, and empty spaces正则表达式:删除所有多余的空格、换行符和空格
【发布时间】:2019-06-21 20:10:55
【问题描述】:

更新:这似乎只是一个正则表达式问题。

我正在尝试使用仅抓取 100 个字符的功能从用户故事中删除所有额外的空格、换行符和空格

问题是虽然 100 个字符的限制有效,但不适用删除空格、换行符和空格:

function aboutme_echo($x, $length)
{ 
    if(strlen($x) <= $length) 
    { 
        echo $x; 
    }
    else
    {
        $y = substr($x,0,$length) . '...'; 
        echo $y; 
    } 
}

aboutme_echo((preg_replace("/\s+/"," ", $aboutme)), 100);

示例字符串:????????????什么?!太疯狂了!

长话短说,

????????有人联系了我,他感染了药物病毒。 ??????我有机会重建他们的网站,但我不能急于规划和登台,但我...

【问题讨论】:

  • 你能提供一个示例字符串和预期的结果/计数吗?
  • 添加了它,所以是的,用户输入有时会有很多空格和表情符号......
  • the removing of whitespace, linebreaks and empty spaces does not apply 是什么意思?您只在您的正则表达式中搜索spacessandbox.onlinephpfunctions.com/code/…
  • 您的代码运行良好,如果您建议删除所有空格等,preg_replace 的第二个参数应该是 '' 而不是 ' '
  • 你是对的@waterloomatt - 我不熟悉正则表达式 - 我从escapequotes.net/php-remove-multiple-whitespaces获取了该代码

标签: php regex


【解决方案1】:

可能是这样的吗?

function cleanExcerpt($string) {
   $pattern = '/\s+/';
   $replace = ' ';
   $cleanstring = trim(preg_replace($pattern,$replace,$string));
   return strtok(wordwrap($cleanstring, 100, "...\n"), "\n");
}

要使用,你必须传递一个字符串并像这样回显函数:

$string = "Example String: ???WHAT?! That's crazy! Long story short, ??someone reached ";

echo cleanExcerpt($string);

【讨论】:

  • 这对我来说返回空白
  • @DLoy 我更新了我的答案以包含该函数的用例。它有效,我已经测试过几次了。您只需要回显该函数并确保您通过它传递一个字符串。
猜你喜欢
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2016-06-17
  • 1970-01-01
相关资源
最近更新 更多