これは私のコードです:
preg_replace('/[^{Hebrew}a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $q);
az、AZ、0-9、任意の数の単一の空白、およびヘブライ文字のみを受け入れることになっています。
私は多くのバリエーションでそれを試しましたが、それを機能させることができませんでした.
前もって感謝します!
これは私のコードです:
preg_replace('/[^{Hebrew}a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $q);
az、AZ、0-9、任意の数の単一の空白、およびヘブライ文字のみを受け入れることになっています。
私は多くのバリエーションでそれを試しましたが、それを機能させることができませんでした.
前もって感謝します!
PCRE では\p{xx}
、Unicode カテゴリ名またはUnicode スクリプト\P{xx}
名のいずれかを受け取ることができます。リストは、PHP のドキュメントまたはPCRE の man ページにあります。
ヘブライ語のスクリプトの場合は、 を使用する必要があります\p{Hebrew}
。
, ,のエスケープも削除\
します。これは、文字クラス内での特別な意味が既に失われているためです。正規表現にはドット メタ文字がないため、フラグ ( ) は役に立ちません。.
(
)
[]
s
DOTALL
preg_replace('/[^\p{Hebrew}a-zA-Z0-9_ %\[\].()&-]/', '', $q);
Unicode FAQから。ブロックとスクリプトの違いについて説明します。参考までに、PCRE は一致する Unicode スクリプトと Unicode カテゴリ (文字プロパティ) のみをサポートしています。
Q: Unicode ブロックがコード ページでない場合、それは何ですか?
A: Unicode 標準のブロックは、コード ポイントの名前付き範囲です。これらは、参照の便宜のために、標準を関連する種類の文字のグループに編成するのに役立ちます。また、チャート作成プログラムで使用され、本やオンラインで公開されているコード チャートで一緒に印刷される文字の範囲を定義します。
Q: Unicode ブロックには文字プロパティが定義されていますか?
A: いいえ。文字プロパティは、エンコードされているブロックではなく、エンコードされた文字自体に関連付けられています。
――キャラクターの台本もそうですか?
A: はい。たとえば、タイ語のブロックには、タイ語のスクリプト プロパティを持つタイ文字が含まれていますが、タイ語のテキストで使用されるバーツ通貨記号の文字も含まれていますが、共通のスクリプト プロパティを持つように定義されています。任意の文字のスクリプト プロパティ値を見つけるには、ブロック値だけではなく、 Unicode 文字データベースデータ ファイルScripts.txtに依存する必要があります。
Q: ブロックの値はスクリプトの値と同じではありませんか?
A: 正解です。ラテン文字など、場合によっては、エンコードされた文字が 12 もの異なる Unicode ブロックに分散されます。残念なことですが、これは単に標準の歴史の結果です。場合によっては、1 つのブロックに複数のスクリプトの文字が含まれる場合があります。たとえば、ギリシャ文字とコプト文字のブロックには、ほとんどがギリシャ文字の文字が含まれていますが、コプト文字の歴史的な文字もいくつか含まれています。