自前Utilityクラス
私が使っている便利な関数を紹介していきます。
ウェブアプリでは、文字をチェック、加工したい場面が頻繁に訪れます。
よく使う処理を関数化して、このクラスに集めておくと便利です。
番号とパスワードの妥当性チェック
PHP
- function isDigit($id) {
- if (!preg_match('/^[1-9][0-9]*$/', $id)) $id = '';
- return $id;
- }
- function isPass($pass) {
- if (!preg_match('/^[0-9a-z]+$/i', $pass)) $pass = '';
- return $pass;
- }
isDigitは、引数が0から始まらず数字のみで構成されているかどうかを判断します。
単に数字の羅列かどうかを調べたいなら、is_numeric関数が用意されています。
isPassは、引数が半角英数字のみで構成されているかどうかを判断します。
メールアドレス、URLの妥当性チェック
PHP
- function isMail($mail) {
- if (!preg_match('/^[\w\-\.]+@[\w\-]+(\.[\w\-]+)+$/', $mail)) {
- $mail = '';
- }
- return $mail;
- }
- function isUrl($url) {
- if (!preg_match('/^(https?|ftp):\/\/[\w+$\;?-\/.%,!#~*:@&=]+$/', $url)) {
- $url = '';
- }
- return $url;
- }
- // \w = 英数字[_a-zA-Z0-9]
メールアドレスの妥当性はこれで大体計れますが、厳密には相当長い正規表現になります。更に、携帯用アドレスには例外もあります。旧J-PHONE機で「?」「/」「+」が含まれるものや、上記関数では通りますが、ピリオドが連続するような不思議なアドレスも存在します。
文字列からURLをリンクで置換する
PHP
- function autolink($str) {
- return preg_replace(
- '/(https?|ftp)(:\/\/[\w+$\;?-\/.%,!#~*:@&=]+)/',
- '<a href="$1$2">$1$2</a>', $str);
- }
第二引数の$1、$2は後方参照と言って、第一引数内括弧()一番目、二番目に相当します。
($0は第一引数の正規表現全部にマッチした文字列になります。)
秒数を計る
PHP
- function getMicrotime() {
- list($usec, $sec) = explode(' ', microtime());
- return ((float)$sec + (float)$usec);
- }
- // $start = getMicrotime(); ~ループなどの処理~ $end = getMicrotime();
- // 所要時間(秒) = $end - $start;
ベンチマークなど、処理経過時間を計算したい時に使います。
microtime
文字列の最初と最後の余分なホワイトスペースを取り除く
PHP
- function mb_trim($str, $chars='\s ') {
- $str = mb_ereg_replace("^[$chars]+", '', $str);
- $str = mb_ereg_replace("[$chars]+$", '', $str);
- return $str;
- }
- // \s = 空白文字[ \t\n\r\f]
内蔵のtrim関数に全角スペースを追加した機能。
(PHPでマルチバイトを正確に扱うには注意が必要です。)
マルチバイト文字列関数
UTF-8の場合はpreg_replaceで書けます。
PHP
- function mb_trim($str, $chars='\s ') {
- $str = preg_replace("/^[$chars]+/u", '', $str);
- $str = preg_replace("/[$chars]+$/u", '', $str);
- return $str;
- }
改行コードをBRタグに変換する
PHP
- function nlToBr($str) {
- $str = preg_replace("/\x0D\x0A|\x0D|\x0A/", "\n", $str);
- $str = preg_replace("/\n{3,}/", "\n\n", $str);
- $str = str_replace("\n", '', $str);
- return $str;
- }
フォームから受け取った文章内の改行をBRタグに変換します。改行を表す改行コードはOSによって異なる為、統一してから変換するとどのOSでも同じ効果が得られます。
| OS | 表示記号 | 改行コード | 改行文字 |
|---|---|---|---|
| Windows | CRLF | \x0D\x0A | \n |
| Macintosh | CR (Carriage Return 改行) | \x0D | \n |
| Unix | LF (Line Feed 行頭復帰) | \x0A | \n |
(注) 内蔵のnl2br(string)は改行文字の前に改行タグを挿入します。







