2015年3月26日 星期四

php 使用str_pad 將字串或是數字補0

會找到有些使用sprintf函式的方法 像下面這樣
1
2
$var = 1;
echo sprintf("%02d", $var);
其實php本身就有一個專門可以補齊位數的函式 : str_pad()
string str_pad ( string $input , int $pad_length [, string $pad_string= " " [, int $pad_type= STR_PAD_RIGHT ]] )
$input : 原字串
$pad_length : 補齊後的位數
$pad_string : 用來補齊的字串
$pad_type : 補齊的方式 有三種,STR_PAD_RIGHT (由右邊補)、STR_PAD_LEFT (由左邊補)、STR_PAD_BOTH (左右兩邊都補), 預設為STR_PAD_RIGHT
所以其實不只可以補零,要補什麼字都可以
而以補零來舉例的話就是
1
2
3
4
5
6
7
8
9
10
11
12
$value = 7;
//將數字由左邊補零至三位數
$value = str_pad($value,3,'0',STR_PAD_LEFT);
echo $value;
// 結果會印出 007;
//下面這是document裡的例子
$input = "Alien";
echo str_pad($input, 10);                      // produces "Alien     "
echo str_pad($input, 10, "-=", STR_PAD_LEFT);  // produces "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH);   // produces "__Alien___"
echo str_pad($input, 6 , "___");               // produces "Alien_"
參考[lifeIs: tooShort to: waste]

2015年3月19日 星期四

在PHP中json的使用方法

最近剛好接到一個要接收其他語言的參數並整了到網站資料庫中的案子,之前就有聽說過JSON可以完成這樣的串接,而且輕量沒有負擔。Json可以串接相當普及的語言像是AJAX、C++、Javascript、Java、Node.js等不同的語言,這對於移動的世界而言是不可不知的技術啊!
剛好看到一篇不錯的文章介紹,以下為PHP使用JSON來介紹

JSON 是個以純文字為基底去儲存和傳送簡單結構資料,你可以透過特定的格式去儲存任何資料(字串,數字,陣列,物件),也可以透過物件或陣列來傳送較複雜的資料。一旦建立了您的 JSON 資料,就可以非常簡單的跟其他程式溝通或交換資料,因為 JSON 就只是純文字個格式。


簡單範例
PHP有兩個函式來處理JSON的資料

json_encode() // 將資料轉成JSON格式
json_decode() // 將JSON資料轉為可處理的資料


此範例是將資料轉為JSON格式

<?php
  $cart = array(
  "orderID" => 12345,
  "shopperName" => "John Smith",
  "shopperEmail" => "johnsmith@example.com",
  "contents" => array(
    array(
      "productID" => 34,
      "productName" => "SuperWidget",
      "quantity" => 1
    ),
    array(
      "productID" => 56,
      "productName" => "WonderWidget",
      "quantity" => 3
    )
  ),
  "orderCompleted" => true
);

echo json_encode( $cart );
?>


此範例為將JSON轉為PHP可讀檔案

<?php
$jsonString = '
{                                           
  "orderID": 12345,                         
  "shopperName": "John Smith",              
  "shopperEmail": "johnsmith@example.com",  
  "contents": [                             
    {                                       
      "productID": 34,                      
      "productName": "SuperWidget",         
      "quantity": 1                        
    },                                      
    {                                       
      "productID": 56,                      
      "productName": "WonderWidget",        
      "quantity": 3                         
    }                                       
  ],                                        
  "orderCompleted": true                    
}                                           
';
  
$cart = json_decode( $jsonString );
echo $cart->shopperEmail . "<br />";
echo $cart->contents[1]->productName . "<br />";

?>

其實重點就是在json_encode及json_decode這兩個函式的操作,因JSON有自己的格式,所以PHP要讀出來不是大問題,只是兩語言串接的過程是比較需要仔細規劃的。

2015年3月16日 星期一

[PHP]如何取得 youtube 的影片縮圖

越來越多的網站需要串接Youtube的需求,而影片的圖片也是常常被使用的功能,以下為得到Youtube影片縮圖的方式。


可以從YouTube文件中知道縮圖的來源,像是:

http://img.youtube.com/vi/{youtubeID}/0.jpg //480*360  影片大圖
http://img.youtube.com/vi/{youtubeID}/1.jpg //120*90  影片開始一點點   
http://img.youtube.com/vi/{youtubeID}/2.jpg //120*90 影片中間
http://img.youtube.com/vi/{youtubeID}/3.jpg //120*90  影片結尾
http://img.youtube.com/vi/{youtubeID}/default.jpg //120*90 影片大圖
http://img.youtube.com/vi/{youtubeID}/hqdefault.jpg //480*360  影片大圖 等於0.jpg
http://img.youtube.com/vi/{youtubeID}/mqdefault.jpg //320*180 影片大圖 去黑邊
http://img.youtube.com/vi/{youtubeID}/sddefault.jpg //640*480 影片大圖
http://img.youtube.com/vi/{youtubeID}/maxresdefault.jpg //1280*720 影片大圖(應該
是最高解析度大圖)

其中的youtubeID是指影片的ID值
那ID要如何取得呢?
就是網址參數的 [v]
例如: https://www.youtube.com/watch?v=RUy8wXIn_Xw


或是嵌入影片中的
<iframe width="420" height="315" src="https://www.youtube.com/embed/RUy8wXIn_Xw" frameborder="0" allowfullscreen></iframe>

RUy8wXIn_Xw就是youtubeID

在PHP中要得要這樣的的值是有些方式,像是用拆字串的方式硬幹或是使用preg_match 找出網址的部分。

以下為使用preg_match的方式找出youTubeID


preg_match('/watch\?v=([^&]*)/','https://www.youtube.com/watch?v=RUy8wXIn_Xw',$match);

$match[1]; //youtubeID