2017-10-14 9 views
1

特定の文字列(引用符)に対して正規表現でチェックを追加すると同時に@(\ w +)を含む正規表現に優先順位を付けることができますか?PHP Regexは文字列中の複数のマッチを一致させますか?

@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

これはすべて1行に入っているのですか、各タグの後に新しい行がありますか? – Andreas

答えて

1

多分このような何か? https://regex101.com/r/1Hd7k8/1

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

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


Iは、[]括弧内のwは\を添加し、空間&を含み、 - それは、それら複数回のいずれかと一致するために。

編集;最後にスペースが含まれているので、出力するときに文字列をトリムする必要があります。
echo trim($matches[0]);などを使用してください。

+0

@ 3kbest regexは期待通りに返します。 https://3v4l.org/2fAI6あなたの他の関数に問題があります – Andreas

+0

問題を発見したので、最初の入力でhtmlspecialchars_decode関数を使用しなければなりませんでした。 ありがとうございました – 3kbest

関連する問題