2013年1月8日火曜日

開発環境

『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の付録B(正規表現の基本)B.8(演習問題)2を解いてみる。

2.

HTML、PHPのソースコード(BBEdit)

sample114.php

<?php
  require 'formhelpers.php';
  
  if(array_key_exists('_submit_check', $_POST)){
    if($errors=validate_form()){
      show_form($errors);
    } else {
      process_form();
    }
  } else {
    show_form();
  }
  
  function show_form($errors=''){
    if($errors){
      print 'エラー<ul><li>';
      print implode('</li><li>', $errors);
      print '</li></ul>';
    }
    print '<form method="POST" action="' . $_SERVER['PHP_SELF'] . '" >';
    print '<label>ユーザー名: ';
    input_text('username', $_POST);
    print '</label>';
    input_submit("submit", "submit");
    print '<br />英字と数字だけを使用してください';
    print '<input type="hidden" name="_submit_check" value="1" />';
    print '</form>';
  }
  function validate_form(){
    $errors = array();
    if(!strlen($_POST['username'])){
      $errors[] = "ユーザー名を入力してください";
    }
    if(preg_match("/[^A-Za-z0-9]/",$_POST['username'])){
      $errors[] = "英数字以外の文字をユーザー名に使用する事は出来ません";
    }
    return $errors;
  }
  function process_form(){
    print "ユーザー名: " . $_POST['username'];
  }
?>

ちなみにJavaScriptの場合。

コード(BBEdit)

<label>ユーザー名(半角英数字のみ): <input id="t_username" type="text" value="" onkeyup="f()"/>
</label>   
<span id="s0"></span>
<script>
function f(){
  var username = $('#t_username').val();
  if(/[^A-Za-z0-9]/.test(username)){
    $('#s0').css('color', 'red');
    $('#s0').text("無効");
  } else {
    $('#s0').css('color',"");
    $('#s0').text('有効');
  }
}
</script>
 

pythonの場合。

sample.py

コード(BBEdit)

#!/usr/bin/env python3.3
# -*- coding: utf-8 -*-

import re

while True:
    username = input("ユーザー名: ")
    if re.search(r"[^A-Za-z0-9]", username):
        print("使えるのは半角英数字のみ")
    elif username == "":
        print("ユーザー名を入力してください")
    else:
        print("ユーザー名: {0}".format(username))
        break

入出力結果(Terminal)

$ ./sample.py
ユーザー名: 
ユーザー名を入力してください
ユーザー名: ~!@#$%^&*()_+QWERTYUIOP
使えるのは半角英数字のみ
ユーザー名: python
ユーザー名: python
$

0 コメント:

コメントを投稿