PHP-删除字符串的两部分

PHP-删除字符串的两部分,php,Php,我一直在试图弄清楚这一点,因为我以前从未需要这样做,但我如何删除字符串的两个部分?这就是我到目前为止所拥有的 str_replace('/pm ', '', $usrmsg) $usrmsg将是用户在我的聊天室中发送的内容,我已经删除了/pm,但这需要2个变量 1:用户名 2:将消息发送给用户 用户名没有空格,因此在第二个单词之后,将输入给用户的消息。如何分别删除字符串的前两部分?因此您删除了/pm,只需要下一个单词 // remove the /pm $usrmsg = str_split(

我一直在试图弄清楚这一点,因为我以前从未需要这样做,但我如何删除字符串的两个部分?这就是我到目前为止所拥有的

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

1:用户名 2:将消息发送给用户


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

因此您删除了
/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];

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

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

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

$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'];
$inp='/pm马特嘿,马特,这是我给你的信息;
preg_match(“~^\/pm\s”(?P.*?)\s(?P.*?)$~”,$inp,$matches);
echo$matches['username']。PHP_EOL;
echo$matches['message'];
或者干脆

list(, $user, $text) = explode(" ", $string, 3);
可以使用explode()方法,如下所示

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

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

您可以使用特殊字符将用户名括起来,例如请给我们一个输入示例。好友-用户可以发送这样的消息/pm matt Hey matt,这是我给你的信息…我真的无法理解你的问题,下面的答案,我没有想到要尝试这样的事情,谢谢你的回答!
$tokens = explode(' ', "/pm matt hi matt this is maatt too", 3);
print_r($tokens);