3

preg_match() とバックスラッシュで奇妙な問題に遭遇しました。ユーザー名に不正な文字がないかチェックしようとしています。ほとんどすべてのもので動作しますが、'BobDobbs\' のようなユーザー名が通過しているようです。

strpos() を使用して問題を簡単に回避できましたが、構文の何が問題なのかまだわかりません。PHP 5.3.10 を実行しています。

$displayname = 'BobDobbs\\\\';
if(preg_match("/[^A-z0-9_.-]/", $displayname)) {
    $errors[] = 'Name contains illegal characters';
}
4

1 に答える 1

8

範囲A-zには\文字が含まれます。a-zA-Z代わりに探していると思います。

(Aは 65、zは 122、および\92 です。)

于 2013-01-17T03:18:48.440 に答える