投稿フォームにフリガナ欄を付けたのですが、
フリガナがカタカナかどうかを調べる箇所でつまづいています。
「ポケットリファレンス」を見よう見まねで下のように作ってみたのですが、
配列furiganaの各要素に一文字ずつ入ってくれません。
(文字列を数字に変換したものがひとつの要素に代入されてしまう)
ループを使えば解決してしまうのですが、
「ポケットリファレンス」によると各文字ごとに各要素に入ってくれるようなので
納得がいきません。
いまいちunpackの使い方が分からないので、アドバイスありましたらよろしくお願いいたします。
#フリガナ欄の文字列を16進数に変換して配列に入れる。
@furigana = unpack("H*", $QUERY{furigana});
foreach (@furigana){
#シフトJISの0x8346より前もしくは0x8396より後なら
if(($_ < 8340) || (8396 < $_)){
#フラグを上げる。
$flag = 1;
}
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
以下を参考にしてはどうでしょうか。
#------------------------------------------------------------------------------#
#概要ひらがな入力チェック処理
#入力$my_cf_val入力値
#$my_val_lenレングスチェック値 -1:未チェック
#戻り値0:正常
#-1:入力桁数異常
#-2:ひらがな以外あり
#------------------------------------------------------------------------------#
sub hiragana_chk
{
my ($my_cf_val,$my_val_len) = @_;
my @my_cf_kana = ('ぁ','あ','ぃ','い','ぅ','う','ぇ','え','ぉ','お',
'か','が','き','ぎ','く','ぐ','け','げ','こ','ご',
'さ','ざ','し','じ','す','ず','せ','ぜ','そ','ぞ',
'た','だ','ち','ぢ','っ','つ','づ','て','で','と','ど',
'な','に','ぬ','ね','の',
'は','ば','ぱ','ひ','び','ぴ','ふ','ぶ','ぷ',
'へ','べ','ぺ','ほ','ぼ','ぽ',
'ま','み','む','め','も',
'ゃ','や','ゅ','ゆ','ょ','よ',
'ら','り','る','れ','ろ',
'ゎ','わ','ゐ','ゑ','を','ん',
'は','か','け','ー');
my $my_cf_work;
my $my_cf_len;
my $my_cf_i;
my $my_cf_j;
my $my_cf_chk_flg = 0;
my $my_cf_hiranum = 87;
$my_cf_len = length($my_cf_val);
if($my_cf_len == 0)
{
return(-1);
}
if($my_val_len != -1)
{
if($my_cf_len != $my_val_len)
{
return(-1);
}
}
if(($my_cf_len % 2) != 0)
{
return(-1);
}
for($my_cf_i = 0 ; $my_cf_i < $my_cf_len ; $my_cf_i += 2)
{
$my_cf_chk_flg = 0;
$my_cf_work = '';
$my_cf_work = substr($my_cf_val,$my_cf_i,2);
for($my_cf_j = 0 ; $my_cf_j < $my_cf_hiranum ; $my_cf_j++)
{
if($my_cf_work eq $my_cf_kana[$my_cf_j])
{
$my_cf_chk_flg = 1;
}
}
if($my_cf_chk_flg == 0)
{
return(-2);
}
}
return(0);
}
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Java Java 南京錠 2 2023/02/04 11:46
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースから取得したデー...
-
perlで2つの配列を比較する方...
-
VBAで3秒だけ時間を止めたい
-
画面を強制的に再描画させる方法
-
VBのReturnの使い方
-
VBAでの一時停止と再開の方法
-
Excel vba でコンボボックスの...
-
Application->Run();の機能につ...
-
VBA for i=1 to lastrow
-
CSVファイルの特定の行だけを読...
-
ダイアログのテキストにマウス...
-
エクセルの当番表を作っていま...
-
C言語でファクト関数を使わずに...
-
xmplayの使い方
-
素数であるかどうかを判定する...
-
エクセルVBAでTransposeの不思議
-
XMLファイルをDataSetに読込む...
-
列挙型と連想配列の違いを教え...
-
Perlでハッシュや配列で重複す...
-
VBA Boxが空白の場合のメッセー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perlでファイルの拡張子を除い...
-
python質問
-
DBIを使ってのデータの取り出し...
-
grep関数を用いた複数行からの抽出
-
データベースから取得したデー...
-
配列内定義サブルーチン呼び出し
-
C言語の関数ポインタのイメージ...
-
桁数指定と四捨五入
-
アルファベットn文字の組み合わ...
-
index関数で複数個抜き出す
-
Perl 戻り値の型の判定って出来...
-
二桁の数字からなる配列数10...
-
サブルーチンと繰り返し処理を...
-
ソート時同じ値がある場合、表...
-
ファイルの最後の行から表示さ...
-
半角文字の縦書き表示
-
配列やハッシュで中身が同じか...
-
乱数と順列と組み合わせ
-
ハッシュ内の各値部分に配列を...
-
正規表現に関する質問
おすすめ情報