剛剛讀了一下 php 官方的文件 , 突然發現一種類似過去開發 vb 時用的寫法
仔細閱讀後 , 發現的確按照這樣的結構來寫會更容易辨識
就是 alternative syntax (官方網站翻譯為等效句法)
等效句法PHP 對於以下的條件句提供了另外一種寫法,這些語句包括:if、 while、 for、 switch。 等效的寫法就是把指令組開頭的 '{' 括號變成冒號 ':': 同時結尾的 '}' 分別變成 endif; endwhile; endfor; endswitch;。 |
官方說明頁:http://php.off.co.il/manual/hk/control-structures.alternative-syntax.php
這用法可能要習慣一下才會上手 , 但是這樣就可以避免為了區分那一堆的 { }
來個例子吧
if ($a == 5):
在 php 中要讀取遠端 RSS 檔案 , 並且容易操作 , 當然是用 simplexml_load_file 函式
$rss = simplexml_load_file('http://www.17885.com.tw/rss/charity.xml');
這樣就已經載入 RSS 資料 , 並轉成 Object 模式放入 $rss 變數中 , 再來列出前 7 篇文章
<table class="twoColHyb2"> <?php if($rss){ $i = 0; foreach($rss->channel->item as $item){ if(++$i > 7) break; ?> <tr> <td class="leftIcon" valign="top">*</td>
本來在試 AJAX 讀 RSS 的部份 , 基於安全性問題 , AJAX 不能呼叫遠端頁面 , 所以就只好寫一個 PHP 來當 Proxy , 並在寫的過程中 , 突然發現了一個很優的 Cache 程式 , 所以整理下來看看 , 或許那天會用到 ...
Proxy.php
<?php if (!isset($_GET['url'])) exit; $url = $_GET['url']; //要快取就將下面的註解取消 //require 'auto_cache.php'; $fp = file_get_contents($url); echo $fp; ?>
auto_cache.php
<?php /**
* auto_cache.php 實現智能的自動緩存。
* 使用辦法極其簡單:
* 在需要實現緩存功能的頁面 require 'auto_cache.php'; 就ok了
* @author rains31@gmail.com
*/
在日前一篇 ImageMagick + PHP來幫上傳的圖片縮圖 中提到使用 ImageMagick 縮圖的方便性
後來發現有個參數上的問題 , 就是假設要上傳的圖片大小 , 比預期要縮圖的大小還小時 , 似乎就要指定特殊的參數才行了 , 去了官方網頁查了一下 , 就發現 -resize 參數還有幾種用法 , 其中 -resize 搭配 > 符號操作就是我想要的 , 就高高興興的加上去跑看看 ...
結果怎麼試都不行 , 沒辦法 , 再讀一下官方說明 , 其中有一段提到 :
取出特定日期字串 (資料庫取出的) 與目前日期時間差
//設定時間 $myTimeStr = '2008/12/31 23:59:59'; //轉換時間 $down_time_object = getdate(strtotime($myTimeStr)); $today_time_object = getdate(); $diff_time_stamp = $down_time_object[0] - $today_time_object[0]; //輸出的時間差 Array $diff_time['mday'] = round($diff_time_stamp/60/60/24) - 1 ; $diff_time['hours'] = round($diff_time_stamp/60/60%24); $diff_time['minutes'] = round($diff_time_stamp/60%60);
驗證資料是否為 數字型態
//驗證資料是否為 數字型態 function Is_Match_Integer($input){ return preg_match('@^[-]?[0-9]+$@',$input) === 1; }
驗證資料是否為 電子郵件
//驗證資料是否為 電子郵件 function Is_Match_Email($input){ return filter_var($input, FILTER_VALIDATE_EMAIL); }
驗證字串長度是否符合 $min - $max
//驗證字串長度是否符合 $min - $max function Is_Match_StrLen($input,$min,$max){ $strlen = strlen($input); return ($strlen >= $min && $strlen <= $max); }
當使用 PHP 讀時間時 , 可能會有時差的問題 , 解決方法就是設定本地時區為亞洲臺灣 ,
date_default_timezone_set("Asia/Taipei");
這樣抓時間就不會出錯了
$today = getdate();
$date1 = date("Y/m/d H:i:s",$today[0]-1*24*60*60); //差一天
smtp.class.php 內容
class smtp { /* Public Variables */ var $smtp_port; var $time_out; var $host_name; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass; /* Private Variables */ var $sock; /* Constractor */ function smtp($relay_host = "", $smtp_port = 25, $auth = false, $user, $pass) { $this->debug = false; $this->smtp_port = $smtp_port;
原文網址 : http://www.52web.com/52article/?view-26.html
1. str_replace
str_replace是非常常常常常用的php函數,用于字符串替換,經常看到某些php新人為了替換一批字符串,寫了好多行str_replace,實在是慘不忍睹。
比如這個例子:
$str = '某人的棲息地 --- www.ooso.net'; $str = str_replace('某人', '壞人', $str); $str = str_replace('的', 'di', $str); $str = str_replace('棲息地', '豬窩窩', $str); $str = str_replace('www.ooso.net', 'ooso.net', $str);
以上,替換了4次字符串,實際只要換個寫法,一行就搞定了:
$str = '某人的棲息地 --- www.ooso.net'; $str = str_replace(