PHP解析用户名的文本块

PHP解析用户名的文本块,php,Php,我想要一块如下所示的文本: Hey @max. How are you? 并且能够辨别“单词”@max是否在其中。因为这种情况,我说: Hey @max2. How are you? 我不想将@max和@max2都注册为存在于该文本块中,只要@max2 编辑: 我试图在文本块中识别用户提及的内容。因此,例如,如果我让用户['max',max2',maxh']循环,我只想返回精确的匹配max是max2和maxh的子字符串,因此当用户提到max2时,我只想检测用户max2,而不是用户max 一些

我想要一块如下所示的文本:

Hey @max. How are you?
并且能够辨别“单词”
@max
是否在其中。因为这种情况,我说:

Hey @max2. How are you?
我不想将
@max
@max2
都注册为存在于该文本块中,只要
@max2

编辑:

我试图在文本块中识别用户提及的内容。因此,例如,如果我让用户
['max',max2',maxh']
循环,我只想返回精确的匹配
max
max2
maxh
的子字符串,因此当用户提到
max2
时,我只想检测用户
max2
,而不是用户
max

一些示例代码:

foreach ($userNames as $userName) {
    if (/* username is present in $text... */) {
        //notify user
    }
}

已编辑

您可以使用
preg\u match\u all
返回给定正则表达式的所有匹配项。您可以使用
/@[a-zA-Z0-9.-]+/
匹配以下用户名变体:

@max
@max2
@max23_
@max2-
@231
@m2
...
下面是一个工作示例:

代码

<?php

$input_lines = 'Hey @max2. How are you?';
preg_match_all("/@[a-zA-Z0-9_-]+/", $input_lines, $output_array);
// Output the results
print_r($output_array);

?>

/@\w+/
是。。。我想你需要什么?你的问题很难理解。@NiettheDarkAbsol怎么样?谢谢你的回答。我认为这与我最初的要求相反,但我不清楚。也许现在更清楚了?非常感谢。同样,您只需要修改正则表达式以匹配任何形式的用户名。我编辑了答案以符合你的询问。希望对你有所帮助。你的编辑让事情变得更清楚了。这对我很有用。谢谢
Array
( 
  [0] => Array
  (
     [0] => @max2
  )
)