ホームページ >バックエンド開発 >PHPチュートリアル >自分のプロジェクトでよく使用される PHP ツールの完全なリストを共有する、PHP ツールの完全なリストを共有する_PHP チュートリアル

自分のプロジェクトでよく使用される PHP ツールの完全なリストを共有する、PHP ツールの完全なリストを共有する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:54:03864ブラウズ

自分のプロジェクトでよく使用される PHP ツールの完全なリストを共有し、PHP ツールの完全なリストを共有します

Php コード 自分のプロジェクトでよく使用される PHP ツールの完全なリストを共有する、PHP ツールの完全なリストを共有する_PHP チュートリアル
  1. /**
  2. * アシスタントクラス
  3. * @著者 www.shouce.ren
  4. *
  5. */
  6. クラスヘルパー
  7. {
  8. /**
  9. * 現在のサーバーシステムを決定します
  10. * @return 文字列
  11. */
  12. パブリック 静的 関数 getOS(){
  13. if(PATH_SEPARATOR == ':'){
  14. }
  15. }
  16. /**
  17. * 現在のマイクロ秒数
  18. * @戻り番号
  19. */
  20. public static function microtime_float() {
  21. リスト (
  22. $usec, $sec) = explode (
  23. " ", microtime ()); ️戻る
  24. }  
  25. /**
  26. * 文字列をUTF-8形式で切り取ります(漢字1文字または文字が1バイトを占めます)
  27. *
  28. * @著者 zhao jinhan
  29. * @バージョンv1.0.0
  30. *
  31. */
  32. public static function truncate_utf8_string($string, $length, $etc = '...') {
  33. $結果 = '';  
  34. $string = html_entity_decode ( trim ( strip_tags ( $string ) ), ENT_QUOTES, 'UTF-8' );  
  35. $strlen = strlen ( $string );  
  36. for($i = 0; (($i $strlen) && ($length > 0)); $i ++) {
  37. if ($number = strpos ( str_pad ( decbin ( ord ( substr ( $string, $i, 1 ) ) ), 8, '0', STR_PAD_LEFT ), '0') ) {
  38. if ($length
  39. 休憩。  
  40. }
  41. $result .= substr ( $string, $i, $number );  
  42. $length -= 1.0;  
  43. $i += $number - 1;  
  44. } else {
  45. $result .= substr ( $string, $i, 1 );  
  46. $length -= 0.5;  
  47. }
  48. }  
  49. $result = htmlspecialchars ( $result, ENT_QUOTES, 'UTF-8');  
  50. if ($i $strlen) {
  51. $結果 .= $など;  
  52. }
  53. return $result;  
  54. }
  55. /**
  56. * フォルダーを横断する
  57. * @param string $dir
  58. * @param boolean $all tr​​ue は再帰走査を意味します
  59. * @return 配列
  60. */
  61. public static function scanfDir($dir='', $all = false, &$ret = array()){
  62. if ( false !== ($handle = opendir ( $dir ))) {
  63. while ( false !== ($file = readdir ( $handle )) ) {
  64. if (!in_array($file, array('.', '..', '.git', '.gitignore', '.svn', '.htaccess', '.buildpath','.project'))) {
  65. $cur_path = $dir 。 '/' 。 $ファイル;  
  66. if (is_dir ( $cur_path )) {
  67. $ret['dirs'][] =$cur_path;  
  68. $all && self::scanfDir( $cur_path, $all, $ret);  
  69. } else {
  70. $ret ['files'] [] = $cur_path;  
  71. }
  72. }  
  73. }
  74. closedir ( $handle );  
  75. }
  76. 戻る $右;  
  77. }
  78. /**
  79. * メールで送信
  80. * @param string $toemail
  81. * @param string $subject
  82. * @param string $message
  83. * @return ブール値
  84. */
  85. public static function sendMail($toemail = '', $subject = '', $message = '') {
  86. $ Mailer = yii :: Createcomponent ️ / / 電子メール設定
  87. $メーラー>ホスト ️ $Porter-> = Yii::app()->params['emailPort'] //メールポート
  88. ;
  89. $mailer->Timeout = Yii::app()->params[
  90. 'emailTimeout'];//メール送信タイムアウト
  91. $mailer->ContentType = 'text/html';//HTML形式を設定します
  92. ️ $mailer->SMTPAuth = true; $ Mailer-& gt; yii :: app ()-& gt; params [
  93. ] $ Mailer-& GT; パスワード = yii :: app ()-& gt; ️ $mailer-> $メーラー - > $ Mailer-& GT; fromName = yii :: app ()-& gt; Params ['emailformname ']; ️ $mailer->AddReplyTo
  94. $modelMail->send_status = '待機中';  
  95. $modelMail->save ();  
  96. // 送信邮件
  97. $mailer->AddAddress ( $toemail );  
  98. $mailer->件名 = $件名;  
  99. $メーラー->本文 = $メッセージ;  
  100. if ($mailer->Send () === true) {
  101. $modelMail->times = $modelMail->times + 1;  
  102. $modelMail->send_status = 'success';  
  103. $modelMail->save ();  
  104. true を返します。  
  105. } else {
  106. $error = $mailer->ErrorInfo;  
  107. $modelMail->times = $modelMail->times + 1;  
  108. $modelMail->send_status = '失敗';  
  109. $modelMail->error = $error;  
  110. $modelMail->save ();  
  111. false を返します。  
  112. }
  113. }
  114. /**
  115. * 文字列が utf-8 か gb2312 かを決定します
  116. * @param 不明 $str
  117. * @param string $default
  118. * @return 文字列
  119. */
  120. public static function utf8_gb2312($str, $default = 'gb2312')
  121. if (emptyempty($str)) $defaultを返す
  122. "gb2312" => "/^([xA1-xF7][xA0-xFE])+$/", //gb2312 かどうかを判断する正規 ️繁体字中国語文字は既に含まれています
  123. ); }
  124. if (!preg_match($preg[$default], $str)) {
  125. } // $option に変換できません。つまり、元のオプションは $default ではありません
  126. } }
  127. /**
  128. * UTF-8とgb2312の自動変換
  129. * @param 不明な $string
  130. * @param string $outEncoding
  131. * @return 不明|文字列
  132. */
  133. public static functionsafeEncoding($string,$outEncoding = 'UTF-8')
  134. for($i = 0; $i strlen ($string);
  135. $i ++) {
  136. 字 个 // 最初のバイト判定合格 ️ 字 个 // 2バイト目の判定は通る
  137. ~ ️ _ ~
  138. } ️) & 192) == 192) {
  139. 字 个 // 最初のバイト判定合格
  140. ️ 字 个 // 2バイト目の判定は通る
  141. } }
  142. ️誰誰誰誰誰誰誰誰誰の、、歌ってる、歌ってる、 }
  143. /**
  144. * 2次元配列内のキー名のすべての値を返します
  145. * @param 入力 $array
  146. * @param string $key
  147. * @return 配列
  148. */ public static function array_key_values($array =array(), $key=
  149. '')
  150. $ret = array(); $ret[$k] = $v[$key]; }
  151. ️ _
  152. }  
  153. /**
  154. * ファイル/ディレクトリが書き込み可能かどうかを判断します (システム独自の is_writeable 関数を置き換えます)
  155. * @param string $file ファイル/ディレクトリ
  156. * @return ブール値
  157. */
  158. public static function is_writeable($file) {
  159. if (is_dir($file)){
  160. $dir = $file;  
  161. if ($fp = @fopen("$dir/test.txt", 'w')) {
  162. @fclose($fp);  
  163. @unlink("$dir/test.txt");  
  164. $writeable = 1;  
  165. } else {
  166. $writeable = 0;  
  167. }
  168. } else {
  169. if ($fp = @fopen($file, 'a+')) {
  170. @fclose($fp);  
  171. $writeable = 1;  
  172. } else {
  173. $writeable = 0;  
  174. }
  175. }
  176. return $書き込み可能;  
  177. }  
  178. /**
  179. 単位のフォーマット
  180. */
  181. static public function byteFormat( $size, $dec = 2 ) {
  182. $a = array ( "B" , "KB" , "MB" , "GB" , "TB" , "PB" );  
  183. $pos = 0;  
  184. while ( $size >= 1024 ) {
  185. $size /= 1024;  
  186. $pos ++;  
  187. }
  188. return round( $size, $dec ) 。 「 」 。 $a[$pos];  
  189. }
  190. /**
  191. * ドロップダウンボックス、ラジオボタン自動選択
  192. *
  193. * @param $string 入力文字
  194. * @param $param 条件
  195. * @param $type タイプ
  196. * 選択済みチェック済み
  197. * @return 文字列
  198. */
  199. static public function selected( $string, $param = 1, $type = 'select' ) {
  200. $true = false;  
  201. if ( is_array( $param ) ) {
  202. $true = in_array( $string, $param );  
  203. }elseif ( $string == $param ) {
  204. $true = true;  
  205. }  
  206. $return='';  
  207. if ( $true )
  208. $return = $type == '選択'? 'selected="選択済み"' : 'checked="チェック済み"';  
  209. エコー $return;  
  210. }
  211. /**
  212. * リモート写真をダウンロード
  213. * @param string $url 画像の絶対 URL
  214. * @param string $filepath ファイルのフルパス (/www/images/test など) この関数は、画像の URL と http ヘッダー情報に基づいて画像のサフィックスを自動的に決定します。
  215. * @param string $filename 保存するファイル名(拡張子は除く)
  216. * @returnmixed ダウンロードが成功すると画像情報を記述した配列が返されます ダウンロードが失敗した場合は false が返されます
  217. */
  218. static
  219. public function downloadImage($url, $filepath, $filename) {
  220. //サーバーから返されたヘッダー情報
  221. ️ pon​​seヘッダー
  222. 後の // 画像のサフィックス
  223. $ch =curl_init($url);
  224. //curl_exec によって返される値に HTTP ヘッダーを含めるように設定します
  225. curl_setopt(
  226. $ch, CURLOPT_HEADER, 1); //curl_exec によって返される値を、HTTP コンテンツを含めるように設定します
  227. curl_setopt(
  228. $ch, CURLOPT_RETURNTRANSFER, 1); //クロールジャンプ後のページを設置(http 301, 302)
  229. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //HTTP リダイレクトの最大数を設定します
  230. curl_setopt($ch, CURLOPT_MAXREDIRS, 3); //サーバーから返されるデータ (http ヘッダー情報とコンテンツを含む)
  231. $html =curl_exec(
  232. $ch);
  233. この取 // このキャプチャされた情報の関連情報を取得します
  234. curl_close(
  235. $ch);
  236. if ($html !== false) {
  237. //応答のヘッダーと本文を分離します。サーバーは 302 個のジャンプを使用する可能性があるため、ここでは文字列を 2 + ジャンプ数の部分文字列に分割する必要があります
  238. ️ ;️ // 最後から 2 番目の段落はサーバーの最後の応答の http ヘッダーです
  239. 最初の数 // カウントダウンの最初の段落はサーバーの最後の応答コンテンツです
  240. ️ 最後に取得 // Responseのヘッダー情報を取得します preg_match_all('/([a-z0-9-_]+):s*([^rn]+)rn/i', $header, $matches); ️ 1])) {
  241. S re $ レスポンスヘッダー [
  242. $ は [1] [ $ i] に一致します] = $ は [2] [
  243. $ i] に一致します
  244. ; ️ } 画像取得 // 画像のサフィックス名を取得します
  245. if (0 '{(?:[^/\\]+).(jpg|jpeg|gif|png|bmp)$}i', $url,
  246. $matches)) {
  247. $ext = $matches[1]; if (
  248. array_key_exists(
  249. 'Content-Type', $responseHeaders)) { ~i'、$responseHeaders['Content-Type']、$extmatches)) {
  250. ~ ️
  251. } 文存 // ファイルを保存
  252. //ディレクトリが存在しない場合は、最初にディレクトリを作成する必要があります ️
  253. mkdir(
  254. $filepath, 0777, true);
  255. Le i $ ファイルパス. =
  256. '/'
  257. $ ファイル名.
  258. ". $ Ext"; $local_file =
  259. fopen(
  260. $filepath, 'w'); ️ (Fclose (l $ local_file); ~ ️ $size。 info[1], '元のファイル名' => $元のファイル名, 'ファイル名' =>
  261. パス情報(
  262. $ファイルパス, ); ️
  263. } } }  
  264. /**
  265. * @param string $ip クエリ対象の IP
  266. * @param $arrIP 禁止された IP
  267. * @return ブール値
  268. */
  269. public
  270. static function ipAccess($ip='0.0.0.0', $arrIP = array()){
  271. $access = true;  
  272. $ip &&
  273. $arr_cur_ip = explode('.', $ip);  
  274. foreach((
  275. 配列)$arrIP as $key=> $value){
  276. if(
  277. $value == '*.*.*.*'){
  278. $access = false; 
  279. // すべて禁止
  280. 休憩。  
  281. }
  282. $tmp_arr =
  283. explode('.', $value);  
  284. if((
  285. $arr_cur_ip[0] == $tmp_arr[0]) && ($arr_cur_ip[1] == $tmp_arr[1])) {
  286. //前二段同じ
  287. if((
  288. $arr_cur_ip[2] == $tmp_arr[2]) || ($tmp_arr[2] == '*')){
  289. // 第三段は* または者同じ
  290. if((
  291. $arr_cur_ip[3] == $tmp_arr[3]) || ($tmp_arr[3] == '*')){
  292. //第四段は* または同じ
  293. $access = false; 
  294. //在禁止ip列,则禁止访问
  295. 休憩。  
  296. }
  297. }
  298. }
  299. }
  300. } /**
  301. * @param string $string 元のテキストまたは暗号文
  302. * @param string $operation 操作 (ENCODE | DECODE)、デフォルトは DECODE です
  303. * @param string $key
  304. * @param int $expiry 暗号文の有効期間、暗号化されたときに有効、単位は秒、0 は永続的な有効性を意味します
  305. * @return string 加工された原文、またはbase64_encodeで加工された暗号文
  306. *
  307. * @example
  308. *
  309. * $a = 認証コード('abc', 'ENCODE', 'key'); * * $b = authcode($a, 'DECODE', 'key') // $b(abc)
  310. *
  311. * $a = 認証コード('abc', 'ENCODE', 'key', 3600);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。