2017-10-14 78 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