ホームページ > バックエンド開発 > PHPチュートリアル > 中国語PHPの正規表現検証の問題を解決する

中国語PHPの正規表現検証の問題を解決する

WBOY
リリース: 2016-07-25 08:59:10
オリジナル
1124 人が閲覧しました
  1. $str = '中華人民共和国 123456789abcdefg';
  2. echo preg_match("/^[u4e00-u9fa5_a-zA-Z0-9]{3,15}$",$strName) ;
  3. ?>
コードをコピーします

上記のコードを実行すると、次のメッセージが表示されます。 警告: preg_match(): コンパイルに失敗しました: PCRE は、F:wwwrootphptest.php の 2 行目のオフセット 3 で L、l、N、P、p、U、u、または X をサポートしていません

その理由は次のとおりです: PHP 正規表現は、次の Perl エスケープ シーケンスをサポートしていません: L、l、N、P、p、U、u、または X

UTF-8 モードでは、「x{...}」が許可され、中括弧内の内容は 16 進数を表す文字列です。 元の 16 進エスケープ シーケンス xhh は、値が 127 より大きい場合、2 バイトの UTF-8 文字と一致します。

解決策: preg_match("/^[x80-xff_a-zA-Z0-9]{3,15}$",$strName);

たとえば、次の例:

  1. /**
  2. * php 正規表現検証 中国語
  3. * bbs.it-home.org を編集
  4. */
  5. $shoji = "はははは";
  6. if (!preg_match("/^[x80-xff]{6,30}$/" , $shoji)){
  7. echo "nonono";
  8. }
  9. else {
  10. echo "yesyesyes";
  11. }
  12. ?>
コードをコピー


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート