-3

入力から文字と記号「-」のみにすべてをフィルタリングする関数を作成しようとしています。入力には名前が含まれているため、そのシンボルが必要であり、誰かがジャンポールと呼ばれる可能性があります。これが私の現在のコードです。

if(!preg_match('/^\[a-zA-Z]+$/',$string)) {
 // Containing something other than a-z and A-Z
}

$string = 'Jean-Paul';文字列に不正な文字が含まれていることがわかりましたが、 " " を受け入れるようにするにはどうすればよい-ですか?

4

2 に答える 2

3
if (!preg_match('/^[A-Z-]+$/i', $string)) {
 // Contains something other than A-Z (case-insensitive) or -
}

A-は、文字クラス内の最初または最後の文字である場合、文字クラス内のリテラル ダッシュとして扱われます。

"Jean-Rémy"それでも失敗することに注意してください。ASCII 文字に制限してもよろしいですか?

于 2012-11-04T12:58:52.030 に答える
1

「フィルター」によって不要な文字を削除することを意味する場合は、使用します

$s = preg_replace("/[^a-z-]/i", "", $s);

また

$s = preg_replace("/[^a-z-]/i", "", iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s));
于 2012-11-04T14:35:40.860 に答える