4

コメント スクリプトの検証に取り組んでおり、西ヨーロッパで使用されているものを除き、英数字以外のすべての文字を削除する必要があります。

私の計画は、英数字以外のすべての文字を次のように正規表現することです。

preg_replace("/[^A-Za-z0-9 ]/", '', $string);

しかし、これまでのところすべてのヨーロッパ文字と £ 記号が取り除かれているため、「Café Rouge」は「Caf Rouge」になります。

上記の正規表現にユーロ文字の配列を追加するにはどうすればよいですか。

配列は次のとおりです。

£, €, 
á, à, â, ä, æ, ã, å,
è, é, ê, ë,
î, ï, í, ì,
ô, ö, ò, ó, ø, õ,
û, ü, ù, ú,
ÿ,
ñ,
ß

私はUTF-8を使用しています

解決:

$comment = preg_replace('/[^\p{Latin}\d\s\p{P}]/u', '', $comment);

$name = preg_replace('/[^\p{Latin}]/u', '', $name);

$name aslo は句読点とスペースを削除します

迅速な返信ありがとうございます

4

2 に答える 2

12
preg_replace('/[^\p{Latin}\d ]/u', '', $str);
于 2012-11-27T13:37:21.887 に答える
0
echo preg_replace('/[^A-Z0-9 £€áàâä...]/ui', '', $string);

重要な部分は/uフラグです。$stringソースコードが UTF-8 でエンコードされていることを確認してください。

ユーザーが入力できるものを厳しく制限し、一部の人を悩ませるため、これはまだ間違ったアプローチだと思いますが、ボートを浮かせているものは何でも...ところで、リストには句読点が含まれていません。

于 2012-11-27T13:24:23.610 に答える