【问题标题】:PHP - Remove 2 parts of a stringPHP - 删除字符串的 2 部分
【发布时间】:2012-07-19 11:15:38
【问题描述】:

我一直在尝试解决这个问题,因为我以前从未需要这样做,但我将如何删除字符串的 2 部分?这就是我目前所拥有的......

str_replace('/pm ', '', $usrmsg)

$usrmsg 将是用户在我的聊天室中发送的内容,我已经删除了 /pm 但这需要 2 个变量...

1:用户名 2:给用户的消息

用户名没有空格,因此在第二个单词之后,将输入给用户的消息。如何分别删除字符串的前 2 部分?

【问题讨论】:

  • 您可以使用特殊字符将用户名括起来,例如
  • 请给我们一个输入的例子。
  • 好友 - 用户可以发送这样的消息 /pm matt 嘿,马特,这是我给你的消息...
  • 我真的无法理解你的问题

标签: php


【解决方案1】:
$string = '/pm username bla bla bla';

list($comand, $user, $text) = explode(" ", $string, 3);

// $comand  --> /pm
// $user    --> username
// $text    --> bla bla bla

或者干脆

list(, $user, $text) = explode(" ", $string, 3);

【讨论】:

    【解决方案2】:

    使用正则表达式。应该是这样的:

    if(preg_match('#^/pm ([A-Za-z]+) (.*)$#',$message,$matches))
         var_dump($matches);
    

    【讨论】:

    • 与下面的答案一样,我没想过要尝试这样的事情,谢谢你的回答!
    【解决方案3】:

    所以你删除了/pm,你只需要下一个字?

    // remove the /pm
    $usrmsg = str_split('/pm', '', $usrmsg);
    
    // split the usrmsg by space
    $parts = str_split(' ', $usrmsg);
    
    // the username is the first part
    $username = $parts[0];
    

    【讨论】:

      【解决方案4】:

      如果您熟悉正则表达式,请使用以下内容:

      $inp = '/pm matt Hey Matt, here\'s my message to you...';
      
      preg_match('~^\/pm\s?(?P<username>.*?)\s(?P<message>.*?)$~', $inp, $matches);
      
      echo $matches['username'] . PHP_EOL;
      echo $matches['message'];
      

      【讨论】:

        【解决方案5】:

        你可以按如下方式使用explode()方法

        $tokens = explode(' ', "/pm matt hi matt this is maatt too", 3);
        print_r($tokens);
        

        数组的第一个元素将带有“/pm”,第二个用户名和第三个将带有消息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-02
          相关资源
          最近更新 更多