0

を確認しようとしています

  1. '@username'
  2. '@username,'
  3. '@username '
  4. '@username.'
  5. '@username. '
  6. '@username:'
  7. '@username: '

私は現在これを持っています:

$post->message = preg_replace(
    '/@ *('.preg_quote($speak['username'], '/').') *:/i',
    '[url=\''.PAGE_URL.RELATIVE_WBB_DIR.'/index.php?page=User&userID='.$speak['toID'].'\']@'.$speak['username'].':[/url]',
    $post->message);

これらの入力を受け入れるようにこれを変更する方法を知っている人はいますか?

4

2 に答える 2

0

探しているものを実現する正規表現は次のとおりです。

/^@[a-zA-Z]+[:\.\,]?[ ]?$/

/^@         // string starts with '@'
[a-zA-Z]+   // contains any letter at least once
[:\.\,]?    // may contain any : , . zero or one time
[ ]?$       // may contain a whitespace zero or one time at end of string
于 2013-01-22T15:34:45.650 に答える
0

正規表現を変更して句読点を追加します。

$post->message = preg_replace(
    '/@ *('.preg_quote($speak['username'], '/').')[:,.]? */i',
    '[url=\''.PAGE_URL.RELATIVE_WBB_DIR.'/index.php?page=User&userID='.$speak['toID'].'\']@'.$speak['username'].':[/url]',
    $post->message);

追加された部分に注意してください。

/@ *('.preg_quote($speak['username'], '/').')[:,.]? */i
                                             ^^^^^^

オプションで、これらの文字 (コロン、コンマ、ピリオド) のいずれかに一致します。

于 2013-01-22T15:10:15.647 に答える