PHP - 删除2个字符串部分

时间:2012-07-19 11:15:39

标签: php

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

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

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

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

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

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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 :(得分:0)

所以你删除了/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];

答案 3 :(得分:0)

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

$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'];

答案 4 :(得分:0)

您可以使用explode()方法,如下所示

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

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