- 締切済み
PHPでの全角、半角判断について
yambejpの回答
- yambejp
- ベストアンサー率51% (3827/7415)
もしshift_jisが必須なら全角ひらがな・カタカナをダイレクトにチェックしてみては? <form method="post"> <input type="text" name="name3" value="セソタ"> <input type="submit" value="go"> </form> <?PHP $name3=isset($_POST["name3"])?$_POST["name3"]:""; $pattern="/^(\x82[\x9F-\xF1]|\x83[\x40-\x96])+$/"; if(preg_match($pattern,$name3)){ print "ok"; }else{ print "ng"; } ?>
関連するQ&A
- 入力内容の確認を行う前に$_POSTの入力値の前後から半角及び全角の空白を取り除きたい。
一つのファイルでフォームへの入力及び入力内容の確認ができるファイル(enter.php)を作成しているのですが、入力内容の確認を行う前に入力値の前後から半角及び全角の空白を取り除きたいです。 しかし、半角及び全角の空白を取り除く部分でプログラムが動作しなくなり、なぜかわかりません。具体的には、以下の部分が問題です。 //入力された値の前後の全角及び半角スペースを取る関数。 function remove_space(&$value) { $value = preg_replace('/^[ ]*(.*?)[ ]*$/u', '$1', $value); } 及び //下記で入力された値の前後の全角及び半角スペースを一気に取り除きたい(ここが問題。)。 array_walk($_POST, 'remove_space'); の部分です(これらの部分を取り除くとプログラムは問題なく動作します。)。 どうやら、function remove_spaceの部分よりもarray_walk($_POST, 'remove_space'); が間違っているようなのですが、どこが悪いかわかる方おられますか? 一様、一通りのコードを下記へ載せておきます。 /////////////////////////////enter.phpファイル <?php session_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <?php //入力された値の前後の全角及び半角スペースを取る関数。 function remove_space(&$value) { $value = preg_replace('/^[ ]*(.*?)[ ]*$/u', '$1', $value); } if (isset($_POST['confirm'])) { $isErr = false; //下記で入力された値の前後の全角及び半角スペースを一気に取り除きたい(ここが問題。)。 array_walk($_POST, 'remove_space'); if (strlen($_POST['my_name']) == 0) { $isErr = true; $error_person = '名前を入力してください。'; } if (strlen($_POST['hobby']) == 0) { $isErr = true; $error_person = '趣味を入力してください。'; } if (strlen($_POST['school']) == 0) { $isErr = true; $error_person = '学校を入力してください。'; } if (!$isErr) { $_SESSION['input_data'] = $_POST; header('Location: https://www.example.com/mail.php'); exit; } } ?> <form action="enter.php" method="post"> <input type="text" name="my_name"> <input type="text" name="hobby'" > <input type="text" name="school"> <input type="submit" name="confirm" value="確認画面へ進む"> </form> </body> </html> ///////////////////////////// よろしくお願いします。
- ベストアンサー
- PHP
- 全角文字と半角文字を判別して文字列を追加
全角文字と半角文字が混合している文字列に文字を追加するプログラムを考えています。 仕様としては全角から半角に変わる際には全角文字の後ろに1234を、 半角から全角に変わるときは半角文字の後ろに4321をつけるというものです。 例1 文字列が「あxxxお」ならば出力結果は「あ1234xxx4321お」 そこで質問なのですが 文字列から全角文字と半角文字をプログラム上で判別して 上記のように出力するにはどうしたらいいんでしょうか? ヒント等ございましたらどうぞお願いします。 とりあえず作ってみた例1の結果を無理やり出力するプログラムのコードを載せておきます。 こちらをうまく改変してくださっても結構ですのでよろしくお願いいたします。 #include <stdio.h> #include <string.h> int main(void){ unsigned char str0[256] = "あxxxお", str1[256] = "1234",str2[256]= "4321"; unsigned int zh,hz, len0 = strlen(str0),len1=strlen(str1),len2=strlen(str2); printf("挿入前:%s\n",&str0); zh=2; //全角から半角に変わる位置 hz=5; //半角から全角に変わる位置 //1234を挿入/// memmove(&str0[zh+len1], &str0[zh], len0 - zh+1); memcpy(&str0[zh], str1, len1); //4321を挿入/// memmove(&str0[hz+len1+len2], &str0[hz+len1], len0); memcpy(&str0[hz+len1], str2, len2); printf("挿入後:%s\n",&str0); return 0; }
- ベストアンサー
- C・C++・C#
- VBA エクセル 全角 半角
全角ならOK、半角ならNGと表示させるなら以下の計算式でいいと思います。 これを最終行を取得し、再終行までを判断させるマクロを教えて下さい。 =IF(LEN(A1)*2-LENB(A1)=0,"OK","NG") よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- 全角と半角を確認するには
受け取ったデータ表の中で全角と半角が入り混じっている場合、セルによっては半角「A」とか全角「A」に入力モードが切り替わって判別できるものもありますが、全角なのにそのセルをポインタすると半角モードのままというセルもあります。(半角だとカウントせず、全角だとカウントされるので全角だと判断できます) どうしてなのか実験してみたところ、全角で入力後に半角での入力規則を設定しているみたいです。 この判別を簡便にする方法はありますか。 全角か半角か判別して回答をしてくれるような数式はありますか? (例えば、作業列に「全」「半」などと表示されるような) データの種類が多いため意図的に全角、半角の使い分けを入れている箇所もあるようなのですが。
- ベストアンサー
- その他MS Office製品
- Javascript 全角カナ+半角スペース+全角スペースの正規表現について
初歩的な質問をしてすみません。 一応、自分でも試行錯誤で if (str.match(/[^ア-ンー\- ]+/g)){ alert("フリガナの項目を「全角カタカナ」のみで入力して下さい。"); } という条件を作ってみたのですが、半角スペースを入力したらTrueとなってしまいます。 全角カナ+半角スペース+全角スペース以外はFalseとなる正規表現を教えていただけないでしょうか。 以上、よろしくお願いします。
- 締切済み
- JavaScript
- エクセル 全角文字を半角に一括変換する方法は?
エクセルで名簿を作っています。 会員に登録してもらうときには、全角入力しかできません。 DBからエクセルに取り込んで、全角入力のカラムを一括変換で 半角にしたいのですが、(具体的に言いますと、全角カタカナのふりがなを半角カタカナにしたい)、どうすればいいのでしょうか? 宜しくお願いいたします。
- ベストアンサー
- Windows XP
- 占いをするとき、文字は半角か全角か?
私が前にネットでやった占いで、名前とか好きな食べ物とかを入力して占う占いがあったんですけど、その入力欄に文字を半角で入れるか全角で入れるかで、結果が違ったんです。 それでここで質問なんですが、占いは半角と全角どちらで入力するのが正しいんでしょう? 半角が世界的に共通らしいから半角? でも私が前やった、上記とは違うサイトの占いでは、カタカナが全角でしか入力できず、半角で入力すると占えませんでした。 どうなんでしょう… より正確に占いたいので、どうすればいいか知りたいです。 回答よろしくお願いします!
- ベストアンサー
- その他(占い・超常現象)
- メールフォームでの必須入力チェックについて
はじめまして。PHP初心者です。PHPを使ってメールフォームを作成しています。入力画面で必須項目が記入されていなかったらエラー画面に飛ぶようにしたいのですが、なかなかうまくいきません。下のソースはサンプルを参考につくりました。 //入力画面 <?php if(isset($_POST['submit'])){ session_start(); $errflg = '1'; /*必須項目*/ if(($_POST['name']) == ""){ $_SESSION['name1'] = "・お名前"; $_SESSION['name1'] = $_POST['name1']; $errflg = '0'; }else{ $_SESSION['name']=""; } if($errflg == '0'){ header('Location: error.php'); exit();} ?> 流れとしては、名前の欄が入力されていなかったら、エラー画面に飛ばして「・お名前」と表示させたいです。もし他にいい方法やソースがありましたら教えてください。お願いします。
- ベストアンサー
- PHP
- header(Location: next.php) だとPOSTした値が渡らない?
文末は(だいぶ端折ってますが), (1) エラーがあればエラー表示, (2) エラーがなければnext.phpに飛ぶ という動作をするのですが, next.php 内に echo $_POST["Name"]; とか echo $_POST["reg"]; とか書いても valueの中身が渡ってきていません. header("Location: next.php"); で飛ばすとだめなのでしょうか. http://oshiete1.goo.ne.jp/qa2706500.html でも,#2さんのアドバイスのようにしようとしましたが, #1さんのご教示のように,セッションを利用するしかないですか? ちょっとセッションで値の渡し方がチンプンカンプンなのですが・・・ <?php session_cache_limiter('none'); session_start(); header("Cache-control:no-cache"); header("Pragma:no-cache"); $errFlg=false; if ( $_POST["reg"] == "" ) $errFlg = true; if ( !$errFlg ) { if ( $_POST["Name"] == "" ) { $errFlg = true; $errStr["Name"] = "未入力"; } } if ( $errFlg ) { ?> <html><body> <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> <?= $errStr["Name"] ?></td> <input type="text" name="Name" value="<?php echo $_POST["Name"]; ?>"> <input type="submit" name="reg" value="登録"></td> </form> </body></html> <?php } else { header("Location: next.php"); } ?>
- ベストアンサー
- PHP