【问题标题】:Strip all whitespace and include @ at beginning of Username [closed]删除所有空格并在用户名的开头包含@ [关闭]
【发布时间】:2014-07-30 20:25:05
【问题描述】:

所以这篇文章分为两部分:

我找到了几种不同的方法来删除字符串开头和结尾的空格,或者如果有空格则发送错误 - 但是如何删除字符串 ($name) 中的所有空格?

另外,我如何确保 @ 符号是字符串开头的默认值,例如 twitter 用户名?

【问题讨论】:

标签: php regex


【解决方案1】:

如果空格是指空格字符,则可以使用str_replace:

$string = 'There are two  spaces here .';
echo str_replace(' ', '', $string); //Outputs "Therearetwospaceshere."

如果您需要去除换行符、制表符以及空格,请使用preg_replace

$string = "There are two  spaces and a \n line break here.";
echo preg_replace('/\s+/', '', $string); //Outputs "Therearetwospacesandalinebreakhere."

为了验证字符串是否以 @ 符号开头,我将使用正则表达式:

if (preg_match('/^@/', $string))
   echo 'Begins with @';
else
   echo 'Does not being with @';

【讨论】:

    【解决方案2】:

    试试str_replace():

    $name = 'bill harrison jones';
    $name = '@'.str_replace(' ', '', $name);
    

    See demo

    【讨论】:

    • 多个空格、制表符、换行符怎么样? :D
    • @Twisted1919 - 哦,你太扭曲了! :D +1
    • @Twisted1919 这将处理多个空格。制表符,新行,但是,没有... :)
    • @MarkM - 不用担心,主要是一个有趣的补充 :)
    • @MarkM - OP 没有要求换行,所以我认为你很好:)
    【解决方案3】:
    1. 您可以使用trim() 删除字符串开头和结尾的空格:

      $string = " hello ";
      $newstring = strim($string);
      echo $newstring; // outputs "hello"
      

      如果你想从字符串中删除all空格,你可以使用preg_replace():

      $string = "hello
      hello ";
      $newstring = preg_replace('/\s+/', '', $string);
      echo $newstring; // outputs "hellohello"
      
    2. 您可以使用preg_match()检查开始字符:

      $string = "@esqew";
      if (preg_match('/@([\w]+)/', $string) == 1) {
          // string starts with "@"
      }
      

      Debuggex

      但请小心,因为 Twitter 用户名的 stricter regex 比您想象的要多。

    【讨论】:

    • 最后一个正则表达式将包含不以开头。需要^
    【解决方案4】:

    您的第一个问题令人困惑。听起来你已经解决了你的问题。尽管如此,str_replace 是您想要的功能。

    您的第二个问题应该属于一个单独的问题。但是,字符串是字符数组。所以我想以下方法会起作用

    $name = array_unshift($name, '@');
    

    【讨论】:

      【解决方案5】:

      要删除所有空格和空白(如 break ),请使用此

      $string = preg_replace('/\s+/', '', $string);
      

      检查@

      if($string[0] != '@')
        echo 'Error';
      else
      //do something
      

      如果您想在用户名没有@ 时添加@,请使用此代码

      $string = '@' . ltrim($string,'@');
      

      【讨论】:

        猜你喜欢
        • 2017-01-18
        • 1970-01-01
        • 2021-05-12
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 2013-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多