我一直在试图解决这个问题,因为我以前从来不需要这样做,但是我将如何删除字符串的 2 部分?这是我到目前为止所拥有的..
str_replace('/pm ', '', $usrmsg)
$usrmsg 将是用户在我的聊天室中发送的内容,我已经删除了 /pm 但这需要 2 个变量...
1:用户名 2:给用户的消息
用户名没有空格,因此在第二个单词之后,将输入给用户的消息。如何分别删除字符串的前 2 部分?
我一直在试图解决这个问题,因为我以前从来不需要这样做,但是我将如何删除字符串的 2 部分?这是我到目前为止所拥有的..
str_replace('/pm ', '', $usrmsg)
$usrmsg 将是用户在我的聊天室中发送的内容,我已经删除了 /pm 但这需要 2 个变量...
1:用户名 2:给用户的消息
用户名没有空格,因此在第二个单词之后,将输入给用户的消息。如何分别删除字符串的前 2 部分?
使用正则表达式。应该是这样的:
if(preg_match('#^/pm ([A-Za-z]+) (.*)$#',$message,$matches))
var_dump($matches);
$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);
所以你已经删除了/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];
如果您熟悉正则表达式,请使用以下内容:
$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'];
您可以按如下方式使用explode() 方法
$tokens = explode(' ', "/pm matt hi matt this is maatt too", 3);
print_r($tokens);
The first element of array will have "/pm", the second username and the third will have the message.