文字列を中に入れたいと思って[square] [brackets]い@like @thisます。以下は では機能しますが、 では機能し[tags]ません@users。
$query = "[tag1] [tag2] @user1 @user2 ignoreme";
// check for tags e.g. [tag1] [tag2]
preg_match_all("/\[([^\]]+)\]/", $query, $tags);
// check for users e.g. @username
preg_match_all("/\B@[^\B]+/", $query, $users);
print_r($tags);
print_r($users);
出力:
(
[0] => Array
(
[0] => [tag1]
[1] => [tag2]
)
[1] => Array
(
[0] => tag1
[1] => tag2
)
)
Array
(
[0] => Array
(
[0] => @user1 @user2 ignoreme
)
)
タグpreg_matchは機能していますが、@user はそれ以降のすべてを取得します (2 番目の @user2 を無視しても)。