1

これまでこれを行う必要がなかったので、これを理解しようとしてきましたが、文字列の 2 つの部分を削除するにはどうすればよいですか? これは私がこれまでに持っているものです..

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

$usrmsg は、ユーザーがチャット ルームで送信したものです。既に /pm を削除しましたが、これには 2 つの変数が必要です...

1: ユーザー名 2: ユーザーへのメッセージ

ユーザー名にはスペースがありません。したがって、2 番目の単語の後に、ユーザーへのメッセージが入力されます。文字列の最初の 2 つの部分を別々に削除するにはどうすればよいですか?

4

5 に答える 5

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);
于 2012-07-19T11:32:45.523 に答える
1

正規表現を使用します。次のようになります。

if(preg_match('#^/pm ([A-Za-z]+) (.*)$#',$message,$matches))
     var_dump($matches);
于 2012-07-19T11:23:54.690 に答える
0

次のようにexplode()メソッドを使用できます

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

配列の最初の要素には「/pm」、2番目のユーザー名、3番目の要素にはメッセージが含まれます。

于 2012-07-19T11:32:55.620 に答える
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];
于 2012-07-19T11:22:39.647 に答える
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'];
于 2012-07-19T11:28:16.857 に答える