文字コードはutf-8で、pearのaddRuleを使用しています。
$patternの部分の質問です。
$pattern = '/^(\xe3(\x82[\xa1-\xbf]|\x83[\x80-\xb6]|\x83\xbc)| | )+$/';
$form->addRule('item_name', '文字が正しくありません', 'regex', $pattern, 'client');
全角カタカナ, 半角スペース, 全角スペースチェックは上記のように書くことまでは解ったのですが、以下すべてをチェックするにはどのように変えればいいですか?
『全角カタカナ, 半角スペース, 全角スペース, 半角英数字, 全角英数字, 半角シングルクオーテーション, 全角シングルクオーテーション』
いろいろ試しますがなかなかできません。
よろしくお願いします。
$patternを次のようにしてみてください。
$pattern = '/^(\xe3(\x82[\xa1-\xbf]|\x83[\x80-\xb6]|\x83\xbc)|(\xef(\bc[\x90-\x99]|[\a1-\ba])|(\xbd[\x81-\x9a]))| | |\'’|[a-zA-Z0-9])+)$/';
ご回答ありがとうございます。
2012/03/14 16:51:21|(\xef(\bc[\x90-\x99]|[\a1-\ba])|(\xbd[\x81-\x9a]))
この部分があると、pearでワーニングが出るんですよね。
Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 76 in /home/***/***/script/PEAR/HTML/QuickForm/Rule/Regex.php on line 73
で、
'/^(\xe3(\x82[\xa1-\xbf]|\x83[\x80-\xb6]|\x83\xbc)|[a-zA-Z0-9\']|[a-zA-Z0-9’]| | )+$/'
のようにしたらとりあえず今のところ正常に動いています。
参考になりました。ありがとうございます。