PHP解析用户名的文本块

时间:2016-05-24 16:31:25

标签: php

我想采取如下文字块:

Hey @max. How are you?

并且能够判断'{1}}是否在其中。我说的是,因为这种情况:

@max

我不想同时将Hey @max2. How are you? @max注册为该@max2个文本块。

编辑:

我正在尝试在一个文本块中识别用户提及。因此,例如,如果我有用户@max2并且我遍历它们,我想只返回完全匹配。 ['max', 'max2', 'maxh']maxmax2的子字符串,因此当用户提到maxh时,我只想检测用户max2,而不是用户{ {1}}

一些示例代码:

max2

1 个答案:

答案 0 :(得分:2)

<强>被修改

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

@max
@max2
@max23_
@max2-
@231
@m2
...

这是一个有效的例子: http://www.phpliveregex.com/p/fNO

<强>代码

<?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);

?>

<强>输出

Array
( 
  [0] => Array
  (
     [0] => @max2
  )
)