PHP字串長度找子字串與取代字串的常用函數

PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...

2018年1月14日 星期日

PHP輸出格式化字串

想要讓字串可以進行格式化的編排、組合,並且能夠傳回字串變數、輸出到螢幕或輸出到文字檔案裏面。
一定要記得使用以下4種格式化字串的指令操作方式:

  • printf  輸出格式化的字串
  • sprintf  回傳格式化的字串
  • sscanf  將字串輸入格式化,回傳對映的變數
  • fprintf  將格式化字串寫入文字檔案

使用範例說明:

<?php
// 列印格式化的字串到電腦螢幕上
$name = "小明";
$number = 6;
$dollar = 177.6;
printf("%s有%d張一塊美鈔,折合新台幣%f元", $name, $number, $dollar);

// 組合格式化的字串
$combine_str = sprintf("%s有%d張一塊美鈔,折合新台幣%f元", $name, $number, $dollar);
echo $combine_str;

// 棓析格式化字串為相映數位
$today = "2017-01-14";
list($year, $month, $day) = sscanf($today, "%d-%d-%d");
echo $year. $month. $day;

// 將19.88寫入balance.txt檔案內
$fp = fopen('balance.txt', 'w');
$revenue = 19.8756;
fprintf($fp, '%01.2f', $revenue);
?>

2018年1月6日 星期六

MySQL資料型態與JAVA資料型態的轉換

若要將MySQL data type轉換成Java data type可以參考如下的表格:

MySQL資料型別 可被轉換的JAVA資料型別
CHAR, VARCHAR, BLOB, TEXT, ENUM, ,SE java.lang.String, java.io.InputStream, java.io.Reader, java.sql.Blob, java.sql.Clob
FLOAT, REAL, DOUBLE PRECISION, NUMERIC, DECIMAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT java.lang.String, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Double, java.math.BigDecimal
DATE, TIME, DATETIME, TIMESTAMP java.lang.String, java.sql.Date, java.sql.Timestamp



參考連結:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-type-conversions.html

PHP的JSON編碼使用

JSON(JavaScript Object Notation)它是一種羽量級的資料交換語言,類似於XML的易於人類閱讀與使用,屬於Javascript的一個子集合,JSON的資料格式獨立於語言,目前被很多程式語言(PHP,ASP,JAVA,C...等等)所支援的資料交換格式。JSON的MIME 類型是application/json。

事前的準備工作:
  1. 建立一個$arr陣列物件
  2. 使用json_encode函數,把$arr陣列編碼成$json字串
  3. 再運用json_decode函數,把$json字品解碼回$arr_new陣列
首先,我們來使用PHP Array創建一個$arr的關連一維陣列,
<?php
// 建立$arr陣列
$arr = array("name"=>"Monkey boy", "tel"=>3829389);
?>

然後,以json_encode函數,把剛才建好的$arr陣列物件編碼成$json字串
<?php
// JSON編碼
$json = json_encode($arr);
?>

最後,透過json_decode函數,把$json字串解碼回$arr_new陣列物件
<?php
// JSON解碼
$arr_new = json_decode($json);
echo $arr_new;
?>

PHP陣列Array的使用

PHP語言當中,陣列是一種很常使用的資料型態,通常用來儲存一組資料或資料的集合。一般分為三種類型的陣列:
  1. 索引陣列
  2. 關聯陣列
  3.  多維陣列
索引陣列(或稱一維陣列)
<?php
// 建立一個$fruit陣列存放三個元素到陣列中
$fruit = array("香蕉","西瓜","蘋果");
echo $fruit[0];
?>

關聯陣列
它是由多組的鍵/值所組合而成的資料集合。
<?php
// 建立一個$member陣列存放二個元素到陣列中
$member = array("name"=>"Jerry","tel"=>"3924350");
echo $member["name"];
?>

多維陣列
顧名思義列陣裡面還有陣列的意思。我們就簡單實作一個二層次的两維陣列,如下所示。
<?php
// 產生一個$order两維陣列存放二個訂單明細陣列
$order = array(

           "order_id"=>"order0001",

           "total_amount"=>998,

           "detail0001"=>array("goods_name"=>"白上衣","price"=>299),

           "detail0002"=>array("goods_name"=>"牛仔褲","price"=>699),

          );

echo $order[detail0001]["goods_name"];
?>

陣列的基本操作
<?php
// 計算陣列的長度
echo count($order);

// 利用foreach讀取陣列元素
foreach($order as $key=>$value) {
    echo $value["order_id"];
    echo $value["total_amount"];
}

// 判斷'西瓜'元素是否在$fruit陣列中
if(in_array("西瓜", $fruit)) {
    echo "答對了!"
} else {
    echo "答錯了!"
}

// 將陣列內的元素重新賦於新的變數
list($banana,$watermelon,$apple) = $fruit;
echo $banana;
?>

2018年1月2日 星期二

PHP的序列化Serialize使用

首先,我們需要建立一個User的類別,便於後續物件序列化與反序列化的作業,

<?php
class User {
  private $name;
  private $pass;
  
  function __construct($name, $pass) {
      $this->name = $name;
      $this->pass = $pass;
  }

  public function getName() {
      return $this->name;
  }
  
  public function setName($name) {
      $this->name = $name;
  }

  public function getPass() {
      return $this->pass;
  }
  
  public function setPass($pass) {
      $this->pass = $pass;
  }
}
?>

以它來實體化一個新的$user物件,
<?php
$user = new User("Jerry", "adioirq386hsakhd");
echo $user->getName();
?>

然後我們使用serialize函數將$user物件序列化為字串,
<?php
//物件的序列化
$user_str = = serialize($user);
?>

最後可以利用unserialize函數把$user_str字串反序列化為$obj物件。
<?php
//物件的反序列化
$obj = unserialize($user_str);
?>

2017年12月25日 星期一

PHP使用$_SERVER取得主機IP與網址

<?php
// 取得server ip
echo $_SERVER['SERVER_ADDR'];

// 取得目前請求的PHP頁面的完整URI
echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

// 取得目前請求的PHP頁面的完整實體路徑
echo $_SERVER['SCRIPT_FILENAME'];

// 取得網站的根目錄
echo $_SERVER['DOCUMENT_ROOT'];

// 取得目前請求的PHP頁面的相對URI
echo $_SERVER['REQUEST_URI'];
echo $_SERVER['SCRIPT_NAME'];
echo $_SERVER['PHP_SELF'];
?>

PHP取得隨機時間的函數

<?php
// 取得隨機時間的函數
function get_rand_time($st_time, $ed_time)
{  
  $nums = ($ed_time - $st_time)/(24*60*60);
  //echo  '1 ~ ' . $nums . '<br/>';

  $rd_num = rand(1,$nums);
  //$rand_time = $st_time + ($rd_num - 1) * 24*60*60;
  $rand_time = $st_time + ($rd_num - 1) * 24*60*60 + (rand(1,86399));
  if($rand_time > time()) $rand_time = time();
  //echo $rand_time . ' ('.$rd_num.') <br/>';
  //echo date("Y-m-d H:i:s", $rand_time);
  
  return date("Y-m-d H:i:s", $rand_time);
}

// 執行函式呼叫
$ed_time = strtotime(date("Y-m-d"));
$st_time = $ed_time - 30*24*60*60;

get_rand_time($st_time, $ed_time);

?>