php-tool-box:te
痒い所に手が届く、PHPの文字列系関数を中心としたスニペット集的ライブラリ - Te.php
プロジェクトを始めるといつも必要になって調べて作る、でも覚えるほどでもない、コピペで使ったりライブラリとして呼び出したりできたら便利だなというスニペットを集めてみました。
ライセンス
MITライセンス
ソースコード
<?php /** * Te.php - 痒い所に手が届く、文字列系関数を中心としたスニペット集 - * * 事前に mbstring.internal_encoding または mb_internal_encoding() で * mbstring内部文字コードを指定すること * * @version 0.1.0 * @see http://0-oo.net/sbox/php-tool-box/te * @copyright 2012 dgbadmin@gmail.com * @license http://0-oo.net/pryn/MIT_license.txt (The MIT license) */ class Te { /** * HTMLエスケープ * @param string $str * @return string * @see http://php.net/manual/ja/function.htmlspecialchars.php */ public static function h($str) { return htmlSpecialChars($str, ENT_QUOTES, mb_internal_encoding()); } /** * 文字列を半角にする * @param string $str * @return string * @see http://php.net/manual/ja/function.mb-convert-kana.php */ public static function han($str) { return mb_convert_kana($str, 'askh'); } /** * 文字列を全角にする * @param string $str * @return string * @see http://php.net/manual/ja/function.mb-convert-kana.php */ public static function zen($str) { return mb_convert_kana($str, 'ASKV'); } /** * 英数字とスペースは半角に、カタカナは全角にする * @param string $str * @return string * @see http://php.net/manual/ja/function.mb-convert-kana.php */ public static function hanzen($str) { return mb_convert_kana($str, 'asKV'); } /** * 文字コードをUTF-8にする * @param string $str * @param string $fromEncoding (Optional) 変換前の文字コード * @return string */ public static function utf8($str, $fromEncoding = 'SJIS-WIN') { return mb_convert_encoding($str, 'UTF-8', $fromEncoding); } /** * 文字コードをShift_JIS(Windows-31J,CP932)にする * @param string $str * @return string */ public static function sjis($str) { return mb_convert_encoding($str, 'SJIS-WIN'); } /** * 文字コードをJIS(CP932対応版)にする * @param string $str * @return string */ public static function jis($str) { return mb_convert_encoding($str, 'ISO-2022-JP-MS'); } /** * ゼロ埋め * @param mixed $val 数値等(半角) * @param integer $len ゼロ埋め後の文字数 * @return string * @see http://php.net/manual/ja/function.str-pad.php */ public static function zero($val, $len) { return str_pad($val, $len, '0', STR_PAD_LEFT); } /** * 長い文字列の指定した長さ以降を省略 * @param string $str 文字列 * @param integer $len 表示する長さ(半角は1文字につき1、全角は2でカウント) * @param string $marker (Optional) 省略した場合に後ろに付ける文字列 * @return string * @see http://php.net/manual/ja/function.mb-strimwidth.php */ public static function cut($str, $len, $marker = '...') { return mb_sTrimWidth($str, 0, $len, $marker); } /** * ファイルパスを指定してログをファイルに出力 * @param string $str 文字列 * @param string $path ファイルパス * @return boolean ログ出力に成功したかどうか * @see http://php.net/manual/ja/function.error-log.php */ public static function log($str, $path) { return error_log('[' . date('Y-m-d H:i:s') . "] $str\n", 3, $path); } /** * メール送信 * @param string $from * @param mixed $to 1つの場合はstring、複数の場合はarrayで渡す * @param string $subject * @param string $body * @param array $headers (Optional) 例:array('CC' => 'foo@example.com') * @return boolean メール送信実行結果 */ public static function mail($from, $to, $subject, $body, $headers = array()) { mb_language('ja'); $to = implode(', ', (array)$to); // 複数可 $arr = array("From: $from"); foreach ($headers as $key => $val) { $arr[] = ucfirst(strToLower($key)) . ": $val"; } return mb_send_mail($to, $subject, $body, implode("\n", $arr)); } /** * アップロードされたファイルの処理 * @param string $name formでアップロードファイルに付けたフィールド名 * @param string $path (Optional) ファイルを保存する場合は、そのファイルパス * @return string ファイルの中身 * @throw RuntimeException アップロード失敗 * @see http://php.net/manual/ja/features.file-upload.errors.php */ public static function uploaded($name, $path = false) { $file = $_FILES[$name]; if ($file['error'] !== UPLOAD_ERR_OK) { throw new RuntimeException('Upload error = ' . $file['error']); } if (!is_uploaded_file($file['tmp_name'])) { throw new RuntimeException('Upload error (is_uploaded_file() => false)'); } if ($path) { if (!move_uploaded_file($file['tmp_name'], $path)) { throw new RuntimeException('Upload error (move_uploaded_file() => false)'); } } else { $path = $file['tmp_name']; } return file_get_contents($path); } }
php-tool-box/te.txt · 最終更新: 2012/12/23 21:55 by dgbadmin