開発環境
- OS X Lion - Apple(OS)
- Apache (Web Server)
- PHP (サーバーサイドプログラミング言語、スクリプト言語)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の付録B(正規表現の基本)B.8(演習問題)2を解いてみる。
2.
HTML、PHPのソースコード(BBEdit)
<?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 コメント:
コメントを投稿