-1

PHP では、複数の文字列 (他のユーザー名の形式) についてテキスト (ユーザーが送信したメッセージの形式) をどのようにスキャンしますか?

たとえば、ユーザーがメッセージを送信した場合、文字列「user-one」と「user-two」を「検索」して、それらの文字列を配列に送信する方法が必要です。

こんにちは、これはテスト メッセージです。@user-one、@user-two が表示されますか?

4

4 に答える 4

2

あなたが試すことができます

$message = "Hello this is a test message, can you see it @user-one, @user-two?" ;
preg_match_all("/\@[a-z\-]+/", $message,$match);
var_dump($match[0]);

出力

array (size=2)
  0 => string '@user-one' (length=9)
  1 => string '@user-two' (length=9)
于 2013-01-02T21:51:09.487 に答える
0

strrpos を使用して位置を取得し、substr + strlen を使用してテキストを取得できます。例:

...
$mystring = "Hello this is a test message, can you see it @user-one, @user-two?";
$pos = strrpos($mystring, "@user-one");
if ($pos > 0) {
    $str = substr($mystring, $pos, strlen("@user-one"));
}
...

質問を正しく理解していない場合は申し訳ありません。

于 2013-01-02T22:00:46.010 に答える
0
preg_match_all('|\@(.*) |' , $userText , $match);

print_r($match[1])

$match[1]すべてのユーザー名が含まれます。$userTextユーザー入力テキストです。$match[0]を含むユーザー名が必要な場合に使用します@

于 2013-01-02T21:50:12.293 に答える
0

これで面倒なパターンマッチはありません!

function stringToUserArray($str) { 
$remove = array(".",",","!","?");
$str = str_replace($remove, " ", $str);
$array = explode(" ", $str);
foreach($array as $string) { 
    if($string[0] == "@") { 
        $users[] = $string;
    }
}

return $users;
}
于 2013-01-02T22:11:50.563 に答える