0

preg_match を使用して、すべての通常の文字と i アクセント付き文字 (ï) のみを受け入れるにはどうすればよいですか?

preg_match('#^[ a-zA-Z0-9\[\]()-.!?~*]+$#', $string);

ありがとう!

4

3 に答える 3

1

既存の文字クラスの最後に追加するだけです...

<?php 

  // without the accented i    
  // returns 0, no match :(
  $string = "abcï";
  echo preg_match('#^[ a-zA-Z0-9\[\]()-.!?~*]+$#', $string);

  // adding the accented i to the end of the character class
  // returns 1, a match!
  $string = "abcï";
  echo preg_match('#^[ a-zA-Z0-9\[\]()-.!?~*ï]+$#', $string);

?>
于 2013-02-20T11:04:37.187 に答える
1

ユニコードに一致する場合は、/u (ユニコード) フラグを設定してから、範囲にユニコード文字を含める必要があります。

 preg_match('#^[ \x{00EF} a-z A-Z 0-9 \[\]()-.!?~*]+$#u', $string);

ここにユニコード文字の完全なリストがあります

于 2013-02-20T11:10:46.443 に答える
0

Unicode プロパティを使用します。

preg_match('#^[\pL\pN \[\]().!?~*-]+$#', $string);

\pL 任意の言語の任意の文字を
\pN 表します 任意の言語の任意の数字を表します

于 2013-02-20T13:26:43.643 に答える