PHP使用cURL時對404的判別方法

使用cURL時,假如使用以下代碼

if( curl_exec($ch) ){
    //success
} else {
    //error
}

就算那個網頁404,都會跑去success那邊。

需要使用以下設置

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); //處理失敗判斷
$onlineData = curl_exec($ch);

if( curl_exec($ch) ){
    //success
} else {
    //error
}

就能解決。

因為設置 CURLOPT_FAILONERROR 為 TRUE時,使用curl返回的http狀態碼大於400都會判定為處理失敗。

PHP 將datetime類型分割

$datetime = '2014-01-07 12:34:56';
$datetime1 = explode(' ', $datetime);
$date = explode('-', $datetime1[0]);
$year = $date[0];
$month = $date[1];
$day = $date[2];

//上面好像很多行
//使用正則表達式一行就好了,而其實我都不會正則表達式
list($year, $month, $day, $hour, $minute, $second) = preg_split('/[-: ]/', $datetime);
var_dump($year, $month, $day, $hour, $minute, $second);

PHP在switch中使用比較演算

這樣用也可以 

$flag = 0;
switch (true) {
    case ($flag > 0) : echo 1; break;
    case ($flag < 0) : echo 2; break;
    default : echo 3; break;
}
//輸出的應該是3

WordPress發文同步到Twitter、新浪微博

無聊看了看新浪微博的API,因為跟twitter一樣使用OAuth2.0協議,所以可以通過修改Wordpress源碼,或者自己做一個plugin,即可實現發文同步到這些有api的SNS上。
當然,首先你要先申請成為開發者,獲得appid,這點twitter就很開放,只要你是twitter用戶就可以了。至於微博,呵呵,你懂的。

以下是同步到新浪微博的例子。
將一下這段代碼添加到你wordpress在用的那個主題的functions.php文件的末尾,$status就是你要發的內容,然後更改'你的appid'、'你的用戶名:你的密碼',這樣在你每次在wordpress發文之後,都會馬上同步到twitter和新浪微博了。

//synchronize to weibo
function post_to_sina_weibo($post_ID) {
  if( wp_is_post_revision($post_ID) ) return;
    $get_post_info = get_post($post_ID);
    $get_post_centent = get_post($post_ID)->post_content; 
    $get_post_title = get_post($post_ID)->post_title;
  if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) {
    $request = new WP_Http;
    $status = '' . strip_tags( $get_post_title ) . '€‘ ' . get_permalink($post_ID) ;
    $api_url = 'https://api.weibo.com/2/statuses/update.json';
    $body = array( 'status' => $status, 'source'=>'你的appid');
    $headers = array( 'Authorization' => 'Basic ' . base64_encode('你的用戶名:你的密碼') );
    $result = $request->post( $api_url , array( 'body' => $body, 'headers' => $headers ) );
    }
}
add_action('publish_post', 'post_to_sina_weibo', 0);

PHP使用strtotime()獲取以當前日期為基準N天前|N天后的日期

雖然基本的寫法可以有很多,例如可以使用UNIX TIMESTAMP以計算秒數差來獲得日期,但是PHP有自帶的strtotime()函數還是相當便利的。

	 
date("Y/m/d"); // 今天
date("Y/m/d",strtotime("-10 day")); // 10日前
date("Y/m/d",strtotime("-2 week")); // 2星期前
date("Y/m/d",strtotime("-2 month")); // 2個月前
date("Y/m/d",strtotime("-5 year")); // 5年前
date("Y/m/d",strtotime("+10 day")); // 10日後
date("Y/m/d",strtotime("+2 week")); // 2星期後
date("Y/m/d",strtotime("+2 month")); // 2個月後
date("Y/m/d",strtotime("+5 year")); // 5年後