Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
半角カナチェックについて - PHPプロ!Q&A掲示板
[go: Go Back, main page]

<< foreach内の処理について 質問一覧 ファイルアップロードができません。 >>

  • 募集中!! 0P
半角カナチェックについて

半角カナチェックについて質問です! 
入力した文字列が全て半角カナかチェックしたいです。 
 
文字コードを「UTF-8」で作成しています。 
下記の「is_hankana」の動作は問題ないでしょうか? 
他によい方法がありましたら教えてください。 
よろしくお願いします。

【追伸】
実は「半角数字」と「半角スペース」を条件に追加したいです。
どのようにするといいでしょうか?
教えてください。 
 
<?php 
header('Content-Type: text/html;charset=UTF-8'); 
if (is_hankana(入力文字列)) {
 //半角カナ文字のみ入力してください!
}
?> 

<?php 
function is_hankana($text) 

if (mb_ereg("^[ア-ン゙゚]+$",$text)) { 
  return TRUE; 
 } else { 
  return FALSE; 
 } 

?>
Q半角カナチェックについて kaeru  [09月30日 00時07分] NEW!
┣Re:半角カナチェックについて win_php  [09月30日 02時54分] NEW!
┃┗Re:Re:半角カナチェックについて kaeru  [10月01日 01時57分] NEW!
┗Re:半角カナチェックについて NurseAngel  [09月30日 17時07分] NEW!
  ┗Re:Re:半角カナチェックについて kaeru  [10月01日 01時06分] NEW!

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:半角カナチェックについて

if (preg_match("/(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])/", $kana)) {
   $kana = mb_convert_kana($kana, 'KV', "utf-8");
}

のように、半角を全角に変換のほうが親切ですね。

///////////////////////////////////////////////////////////////////////////////

なんか、読み間違えてました。

半角のみですね。

if (preg_match("/(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])/", $text)) {
// 半角カナ
return TRUE;
} else { 
// 半角カナ以外を含む
return FALSE;

}

半角数字は、

if (preg_match("^[0-9]+$/D", $number)) {
// true
}

Re:Re:半角カナチェックについて

お世話になります。

「半角カナと半角数字と半角スペース」をまとめて1度にチェックはできませんか?

if (preg_match("半角カナと半角数字と半角スペース"), $str)) {
// true


よろしくお願いします。

Re:半角カナチェックについて

とりあえず現状では
is_hankana()は半角カナにマッチすればtrueが返ってくるので、
意図とは全く逆の動作になります。

if(!is_hankana(入力文字列)){***}
です。



字面は同じでも、mb_regex_encodingの文字コードと$textの文字コードが違う場合、
is_hankana()がfalseを返す場合があります。

文字コードを合わせるためmb_regex_encodingを設定しておいた方がいいです。
http://jp2.php.net/manual/ja/function.mb-regex-encoding.php

何故か「文字列として返す」としか書かれていませんが↓のように設定出来ます。
mb_regex_encoding('UTF-8');

Re:Re:半角カナチェックについて

いろいろな方法を考えています。

下記のような方法でやってみましたが 
うまくチェック出来ていないようなので... 

文字コードは'utf-8'です。 

function Check_hankana($str) 

$cha = array('ア','イ','ウ','エ','オ', 
'カ','キ','ク','ケ','コ', 
'サ','シ','ス','セ','ソ', 
'タ','チ','ツ','テ','ト', 
'ナ','ニ','ヌ','ネ','ノ', 
'ハ','ヒ','フ','ヘ','ホ', 
'マ','ミ','ム','メ','モ', 
'ラ','リ','ル','レ','ロ', 
'ヤ','ユ','ヨ','ワ','ン','゜','゛',' ', 
'1','2','3','4','5','6','7','8','9','0'); 
$flg = 0; 
for ($i=0; $i<strlen($str); $i++){ 
   for($j=0; $j<count($cha);$j++){ 
    if ($str[i] != $cha[j]) { 
      $flg = 1; 
      break; 
    } 
   } 

if ($flg == 1)return ture; 
else return false; 
}
foreach内の処理について 質問一覧 ファイルアップロードができません。