• ベストアンサー

入力テキストの属性のチェック

Perlからcsv形式のデータを読み込み、1項目ごとに属性のチェックをしたいのですが、 属性を調べる方法を教えてください。 項目長はlength関数で調べることが出来るのですが、属性を調べる関数がなかなか見つからないのです。 よろしくお願いいたします。

  • you_s
  • お礼率40% (6/15)
  • Perl
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.2

 やはり属性というのは数字かアルファベットか記号か、といったような判別のことのようですね。  であれば、そもそも Perl にそういう関数はありません。  なぜなら、正規表現というものがあるから必要ないんです。  先の回答で /-?[\d\.]/ という、呪文のようなものを書きましたが、これが正規表現です。  正規表現とは、「文字列中に特定の文字パターンが含まれているか」をチェックするためのロジックです。  語りだすとキリがないので、今のところは鵜呑みにしといてもらうことにして、(2)の件はこうします。  if ( $data =~ /[^A-Za-z0-9]/ ) {   # アルファベットもしくは数字以外を含む  } else {   # アルファベットもしくは数字のみ  }  このロジックは、$data の中身が英数字だけで構成されているかどうかをチェックします(本式で書くともちょっと変わりますが、この書き方が分かりやすいので)。

you_s
質問者

お礼

ありがとうございます。 ひととおり参考書は目を通したつもりだったのですが、 どうも正規表現(特に記号の羅列)は苦手意識があるようで… 勉強が足りませんね。 これから少しずつ克服していきます。

その他の回答 (1)

noname#25358
noname#25358
回答No.1

 CSV形式で保存されたデータには「属性」という概念はありませんので、これをチェックする関数はなくて当然なのです(^_^;  属性というのは、数値か文字列か、といったようなチェックでしょうか?  もしそうであれば、Perl には IsNumeric 関数がありませんので、たとえばこのようにします。  if ( $data =~ /-?[\d\.]/ ) {   # 数値  } else {   # 文字列  }  これは、$data の中身が数字(とマイナス記号とピリオド)だけで構成されているかどうかをチェックします。

you_s
質問者

補足

すみません。 CSV形式のデータと書きましたが、テキスト形式のデータでした。 (1)テキストデータの属性チェック関数なるものはあるのですか? (2)回答の記述では、数値か文字列化のチェックは出来ますが、英数字であるかどうかのチェックはどのようにすればよいのでしょうか。 よろしくお願いいたします。

関連するQ&A

  • 異なるname属性のテキストの入力チェックについて

    異なるname属性のテキストの入力チェックについて よろしくお願いします。 それぞれname属性の異なるテキスト群があるのですが、 どれかひとつに数字を入力しないと、アラートが出るようにしたいと思っています。 <form action="mail.cgi" method="post" onSubmit="return check(this);"> <input type="text" name="maru" /> <input type="text" name="sankaku" /> <input type="text" name="shikaku" /> </form> この場合のコードの記述方法をお教え頂ければ幸いです。 どうぞよろしくお願い致します。

  • Javascriptで入力チェックを自動化

    入力フォームを作る際に、作るたびに項目数や必須項目が異なるので、毎回チェックを作るのが面倒になってきました。 そこで、入力フォームのname属性に「*」や「■」が入っていると自動的に必須項目になるようにJavascriptを汎用的に作ることはできないでしょうか? JQueryを使ってもいいので、簡単な方法を知っている方、またはそういうサイトを知っている方よろしくお願いします。

  • テキストボックスに入力されたらラジオボタンにチェック

    いつもお世話になっております。 タイトル通りなのですが テキストボックスに入力された時に、チェックボックスや ラジオボタンににチェックが付くようなJavaScriptを思考しています。 test.php ---------------------------------------- <form name="form1" method="post" action="test.php"> <input type="checkbox" name="235[]" value="1"> <input name="394" type="text" style="ime-mode: active" onchange="text_check('235')" value="" /> </form> script.js ---------------------------------------- function text_check(nm) {  obj = document.form1;  alert(obj.elements[nm + '[]'].length); // アラートで「undefined」と出てしまう。  for( i=0; i<obj.elements[nm + '[]'].length; i++){   obj.nm[i].checked = true;  } } フォームのラジオボタン、テキストボックスのname属性は 数字じゃない場合は、問題なさそうなのですが 数字の場合だとうまく動作してくれません。 name属性を変更することは考えていません。 ご教示よろしくお願いいたします。

  • CSVファイルにあるメールアドレスの重複チェック

    初めて投稿させていただきます、perl初心者です。 イベントの登録とデータ集計がしたくて、色々なメールフォームCGIを 比較検討しております。 今評価中のプログラムはデータをCSVにかき出してくれるのですが、メールアドレスの重複チェックが付いていません、そこでこのプログラムにメールチェック機能を追加したいと考え、色々見て廻ったのですが、良く分かりませんでした、 頭の中では書き出されたCSVファイルを読み込んでメールの列だけ抜き出し、それをチェックすれば良いのかなと考えています。 perlの本やohzakiさんのPerlメモ等も見ましたが良く分かりません。 何方か分かりやすく教えて頂けると助かります。

    • ベストアンサー
    • Perl
  • sqlldrのフィールドの属性について

    sqlldrを使ってcsvファイルのデータをロードしたいのですが、 ファイル内のデータの属性、型について教えてください。 データが数値にした場合は、 「integer external」と「decimal external」のどちらが良いのですか。 違い、使い方を教えてください。

  • formでのチェックボックスのname属性について

    例えば以下のようなフォームがあるとき、 ----------------------------------------------------------------------------- <form name="f"> <input type="checkbox" name="group1" id="a" value="a"/><label for="a">a</label> <input type="checkbox" name="group1" id="b" value="b"/><label for="b">b</label> <input type="checkbox" name="group1" id="c" value="c"/><label for="c">c</label> <input type="checkbox" name="group1" id="d" value="d"/><label for="d">d</label> </form> ----------------------------------------------------------------------------- javascriptでは、document.f.group1で配列として取得できるのですが、 phpでは、$_POST["group1"]では最後にチェックされている項目しか取得できません。 (つまり、phpでは複数選択されていても、一番後ろの1項目しか取得できません。) 少し調べるとphpで取得するには、 name属性値を、group1からgroup1[]とすれば配列として取得できるとありました。 しかしこれでは、javascriptの方でname属性値を使って取得できなくなってしまい、 document.f.getElementsByTagName("input")みたいな感じで取得することになると思います。 そもそも、name属性値に"["や"]"を使うことは良くないと思うので、 phpの方で何らかの方法があると思ったのですが、 最近勉強を始めたばかりの初心者なのでよくわかりませんでした。 今知っているphpに配列で渡す方法が、 「name属性値をgroup1[]のように配列にする」しか無いので、 他に方法があるならば教えてください。 質問の前提として、 1.name属性はフォーム内の項目のグループ化をしている? 2.name属性値に"["や"]"は仕様では使用可能な文字ではない? 1,2ともにYesだと思っています。 もし、この前提が間違っていたらご指摘ください。 質問内容を要約すると、 「checkboxをphpで配列で取得する方法はname属性値を配列にするしかないのですか?」 「他に方法があるなら教えてください」 です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 入力チェックの方法

    入力フォームに入力されたデータのチェック方法ですが、どういう方法で行うのが一番良い方法なのでしょうか? 今までは、『[保存して閉じる]ボタンを押された時に、入力チェックのメソッドを実行する』しかやっていませんでした。 これだと1つのメソッドでまとめてチェックできるので見やすくメンテしやすくて良かったのですが、この方法が良いのか少し疑問もあります。 いろいろ検索してみると人それぞれやり方が違うようですが、項目が多いと結構大変ですよね。 KeyPressイベントで入力規制し、Leaveイベントで入力データのチェック、コピペも出来ないようにして…、入力エラーがあるとボタンは押させない…等、厳密に行うとかなりコーディングが長くなりそうなんですが…(汗 どういう方法が一番良いのでしょうか?これが正解!という物は無いと思いますが他にどういう方法があるのか知りたいのです。 おすすめの方法でも何でも構いません。メリット・デメリットも書いていただけるとうれしいです。 vb2005,2008を使用しております。

  • 未入力のテキストエリア

    こんにちは。 テキストエリアにデータを入力して その入力チェックを行いたいと思います。 入力項目にspace(全角、半角ともに)のみ入力された場合、 escape関数を使用すれば未入力と判断させることはできました。 かりにspaceを4つほど入力(判定では未入力と判断させたい)した 場合、うまくロジックを組むことができません。 どうかアドバイス宜しくお願い致します。

  • オブジェクト指向で入力値チェック

    Webサービスの会員登録とか、CSVを手入力したものをインポートする場合について教えてください。 入力について一定のルールを満たす必要があります。 その場合に入力値チェックをするためにどのようにクラスを作ればいいか悩んでいます。 例えば ・氏名 ・メールアドレス ・パスワード ・年齢 のような情報をチェックするとして、初めて登録する際と一度保存したデータを再利用する際はチェック項目が違うように思えます。 そもそも一度チェックした値なので再利用の際はチェックの必要はかなり限定的でいいと考えています。 となると、作成するクラスは一時的な保持クラスを作って、そこでデータ型とかルールをチェックするようにすればいいのでしょうか。 それともデータクラスに入れる前に正規表現などでチェックしてそのまま放り込めばいいのでしょうか。 UserCreate ←これに一時的に入力データを入れる User ←チェックしたらこっちに入れて保存する Validator ←これがチェック用クラス ただこういう一時的な保持クラスは無駄な感じもして悩んでいます。 ちょっとうまく質問も書けないのですが、なんとかヒントを頂けないでしょうか。 よろしくお願いします。

  • 暗号化属性の確認方法

    ファイルのプロパティから 属性の詳細 内容を暗号化してデータをセキュリティで保護する にチェックを入れたとき、このファイルが暗号化されていることを確認するのはどうすればいいんですか? チェックをつけた後、ファイル名が緑になるだけで、ダブルクリックすると普通に開けてファイルの中身を見ることが出来るのですが、、、 また、この項目はどういったときに使用するのでしょうか?