2017-10-14 77 views
1

如何在正则表达式中为特定字符串添加检查(带引号),同时优先于包含@(\ w +)的正则表达式?PHP的正则表达式在字符串中匹配多个字符串?

@webutvi​​kler @administrator @bugfinder & utvikler @moderator @ chat- & forummoderator @ideutvikler

<?php 
$alphaUsername = array(); 
preg_match_all("/@(\w+)/", $input, $matches); 
if (!empty($matches[1])) { 
    $alphaUsername = array_map('mysql_escape', $matches[1]); 
} 
?> 

我试着用不同的解决方案|在正则表达式检查,但像字符串:“@bugfinder & utvikler”只返回“@bugfinder”,而不是字符串的其余部分。

+0

这是全部在一行还是在每个标签之后有新行? – Andreas

回答

1

也许是这样的?
https://regex101.com/r/1Hd7k8/1

$str = '@webutvikler @administrator @bugfinder & utvikler @moderator @chat- & forummoderator @ideutvikler'; 

preg_match_all('/@([\w &-]+)/', $str, $matches); 

我添加\ W A []括号内并且包括空间&以及 - 以使其匹配任何那些多次。

编辑;当你输出字符串时你需要修剪字符串,因为它们会在最后包含空格。
只需使用echo trim($matches[0]);或类似的。

+0

@ 3kbest正则表达式按预期返回。 https://3v4l.org/2fAI6你有一个问题,你的其他功能 – Andreas

+0

我发现了这个问题,我不得不在第一个输入上使用htmlspecialchars_decode函数。 感谢您的帮助 – 3kbest