自前Utilityクラス

私が使っている便利な関数を紹介していきます。
ウェブアプリでは、文字をチェック、加工したい場面が頻繁に訪れます。
よく使う処理を関数化して、このクラスに集めておくと便利です。

番号とパスワードの妥当性チェック

PHP

  1. function isDigit($id) {
  2.   if (!preg_match('/^[1-9][0-9]*$/', $id)) $id = '';
  3.   return $id;
  4. }
  5. function isPass($pass) {
  6.   if (!preg_match('/^[0-9a-z]+$/i', $pass)) $pass = '';
  7.   return $pass;
  8. }

isDigitは、引数が0から始まらず数字のみで構成されているかどうかを判断します。
単に数字の羅列かどうかを調べたいなら、is_numeric関数が用意されています。
isPassは、引数が半角英数字のみで構成されているかどうかを判断します。

メールアドレス、URLの妥当性チェック

PHP

  1. function isMail($mail) {
  2.   if (!preg_match('/^[\w\-\.]+@[\w\-]+(\.[\w\-]+)+$/', $mail)) {
  3.     $mail = '';
  4.   }
  5.   return $mail;
  6. }
  7. function isUrl($url) {
  8.   if (!preg_match('/^(https?|ftp):\/\/[\w+$\;?-\/.%,!#~*:@&=]+$/', $url)) {
  9.     $url = '';
  10.   }
  11.   return $url;
  12. }
  13. // \w = 英数字[_a-zA-Z0-9]

メールアドレスの妥当性はこれで大体計れますが、厳密には相当長い正規表現になります。更に、携帯用アドレスには例外もあります。旧J-PHONE機で「?」「/」「+」が含まれるものや、上記関数では通りますが、ピリオドが連続するような不思議なアドレスも存在します。

文字列からURLをリンクで置換する

PHP

  1. function autolink($str) {
  2.   return preg_replace(
  3.     '/(https?|ftp)(:\/\/[\w+$\;?-\/.%,!#~*:@&=]+)/',
  4.     '<a href="$1$2">$1$2</a>', $str);
  5. }

第二引数の$1、$2は後方参照と言って、第一引数内括弧()一番目、二番目に相当します。
($0は第一引数の正規表現全部にマッチした文字列になります。)

秒数を計る

PHP

  1. function getMicrotime() {
  2.   list($usec, $sec) = explode(' ', microtime());
  3.   return ((float)$sec + (float)$usec);
  4. }
  5. // $start = getMicrotime(); ~ループなどの処理~ $end = getMicrotime();
  6. // 所要時間(秒) = $end - $start;

ベンチマークなど、処理経過時間を計算したい時に使います。
microtime

文字列の最初と最後の余分なホワイトスペースを取り除く

PHP

  1. function mb_trim($str, $chars='\s ') {
  2.   $str = mb_ereg_replace("^[$chars]+"'', $str);
  3.   $str = mb_ereg_replace("[$chars]+$"'', $str);
  4.   return $str;
  5. }
  6. // \s = 空白文字[ \t\n\r\f]

内蔵のtrim関数に全角スペースを追加した機能。
(PHPでマルチバイトを正確に扱うには注意が必要です。)
マルチバイト文字列関数
UTF-8の場合はpreg_replaceで書けます。

PHP

  1. function mb_trim($str, $chars='\s ') {
  2.   $str = preg_replace("/^[$chars]+/u"'', $str);
  3.   $str = preg_replace("/[$chars]+$/u"'', $str);
  4.   return $str;
  5. }

改行コードをBRタグに変換する

PHP

  1. function nlToBr($str) {
  2.   $str = preg_replace("/\x0D\x0A|\x0D|\x0A/""\n", $str);
  3.   $str = preg_replace("/\n{3,}/""\n\n", $str);
  4.   $str = str_replace("\n"'', $str);
  5.   return $str;
  6. }

フォームから受け取った文章内の改行をBRタグに変換します。改行を表す改行コードはOSによって異なる為、統一してから変換するとどのOSでも同じ効果が得られます。

OS 表示記号 改行コード 改行文字
Windows CRLF \x0D\x0A \n
Macintosh CR (Carriage Return 改行) \x0D \n
Unix LF (Line Feed 行頭復帰) \x0A \n

(注) 内蔵のnl2br(string)は改行文字の前に改行タグを挿入します。

コメントは受け付けていません。