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

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

2018年1月6日 星期六

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);

?>

PHP日期DATE指令的操作

<?php
// 取得現在時間時間戳記(Unix timestamp)
echo time();
echo mktime();

// 格式化時間
echo date('Y-m-d H:i:s', '1461827400');
echo date("Y-m-d H:i:s");

// 字串轉時間
echo strtotime("10:30pm April 15 2014");

// 設定timestamp
$timestamp = strtotime('Mon, 12 Dec 2011 21:17:52 +0000');
$dt = new DateTime();
$dt->setTimestamp($timestamp);

// 設定預設的時區
date_default_timezone_set();

// 設定timezone和format
$dtm = new DateTime(strtotime($time));
$dtm->setTimezone(new DateTimeZone(ADMIN_TIMEZONE));
$date = $dtm->format('D, M dS');
$time = $dtm->format('g:i a');

?>

PHP與SimpleXml使用CRUD

<?php
// 建立SimpleXmlElement
$config = new SimpleXmlElement('');
$config->setting1 = 'setting1 value';         
$config->saveXML('config.xml');               

// 讀取SimpleXmlElement
$config = new SimpleXmlElement('config.xml');
echo $config->setting1;
echo $config->asXml();

// 更新SimpleXmlElement
$config->setting1 = 'new value';
$config->setting2 = 'setting2 value';
echo $config->asXml();

// 刪除SimpleXmlElement
unset($config->setting1);
$config->setting2 = NULL;
echo $config->asXML();
unlink('config.xml');

?>

PHP常用字串指令的使用

<?php
$str = "電腦專家,是PRO訓練,有素的人才!";

// 字串轉小寫
echo strtolower($str);

// 字串轉大寫
echo strtoupper($str);

// 從左邊開始找PRO字串片段
echo strpos($str,'PRO');

// 從右邊開始找PRO字串片段
echo strrpos($str,'PRO');

// 取長度為5的子字串
echo substr($str, 5);

// 字串取代
echo str_replace("PRO", "專業", $str);

// 字串分割為陣列
$ss = explode(',',$str);

?>