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

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

2018年2月16日 星期五

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

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

取得字串長度
<?php
$str_len = strlen('abc');
echo '長度:'.$str_len;
?>
輸出結果:
長度:3

在某字串中,找出一個子字串第一次出現的位置
<?php
$str = 'abcdefg';
$str_pos = strpos($str, 'd');
echo '位置:'.$str_pos;
?>
輸出結果:
位置:3

在某字串中,找出一個子字串最後一次出現的位置
<?php
$str = 'abcdeDdfg';
$str_rpos = strrpos($str, 'd');
echo '位置:'.$str_rpos;
?>
輸出結果:
位置:6

找出一個不區分大小寫的子字串第一次出現的位置
<?php
$str = 'abDcdefg';
$str_ipos = stripos($str, 'd');
echo '位置:'.$str_ipos;
?>
輸出結果:
位置:2

找出一個不區分大小寫的子字串最後一次出現的位置
<?php
$str = 'abDcdefDg';
$str_ripos = strripos($str, 'd');
echo '位置:'.$str_ripos;
?>
輸出結果:
位置:7

字串取代
表示取代所有已找到的字串為新字串
<?php
$str = "abc中文def";
$new_str = str_replace('中文', '功夫', $str);
echo '新字串:'.$new_str;
?>
輸出結果:
新字串:abc功夫def

字串取代 (不區分大小寫)
<?php
$str = "abDcDdefd";
$new_str2 = str_ireplace('d', 'x', $str);
echo '新字串:'.$new_str2;
?>
輸出結果:
新字串:abxcxxefx


PHP字串去除空白與字串轉大小寫

PHP字串去除空白可以依編寫程式的需要來去除左右邊的空白,亦或是只去除左邊還是右邊的空白。也可以對字串進行完全大寫或小寫的轉換,或是在字串中對第一個字元轉大寫或小寫,如果你要將字串裡面的每一個字的的第一個字元都轉成大寫也是有對映的函數可以運用。

去除字串左右空白
<?php
$str = ' abc ';
echo trim($str);
?>
輸出結果:
abc

去除字串左邊空白
<?php
$str = ' abc ';
echo ltrim($str);
?>
輸出結果:
abc

去除字串右邊空白
<?php
$str = ' abc ';
echo rtrim($str);
?>
輸出結果:
 abc

字串轉小寫
<?php
$str = 'ABC';
echo strtolower($str);
?>
輸出結果:
abc

字串轉大寫
<?php
$str = 'abc';
echo strtoupper($str);
?>
輸出結果:
ABC

字串的字首大寫
<?php
$str = 'abc';
echo ucfirst($str);
?>
輸出結果:
Abc

字串的字首小寫
<?php
$str = 'ABC';
echo lcfirst($str);
?>
輸出結果:
aBC

字串中的每一個字的開頭字元大寫
<?php
$str = 'apple newsletter';
echo ucwords($str);
?>
輸出結果:
Apple Newsletter





PHP字串分割與組合函數

字串的分割、組合函數,在開發PHP的程式設計當中是經常運用的程式開發技巧,可以將一個字串切割成多段子字串,再儲存於陣列中。相反的,也可以將一個陣列內的元素,重新組合成為一個字串,亦或直接從CSV檔案中取出每一個資料元素合成一個新的陣列。

透過字串來分割字串
<?php
$arr1 = explode("|", "A|B|C");
print_r($arr1);
?>
輸出結果:
Array ( [0] => A [1] => B [2] => C )


組合陣列為一個字串
<?php
$arr1 = array('A','B','C');
$str1 = implode("|", $arr1);
echo $str1.'<br/>';

// 表示implode的別名
$str2 = join("|", $arr1);
echo $str2;
?>
輸出結果:
A|B|C
A|B|C


剖析CSV檔案格式為一個陣列
<?php
$csv_str = "a,b,c,d,e";
$arr2 = str_getcsv($csv_str);
print_r($arr2);
?>
輸出結果:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e )


轉換一個字串為一個陣列
<?php
// 依3個字元長度進行字串切割
$str3 = "abcdef";
$arr3 = str_split($str3,3);
print_r($arr3);
?>
輸出結果:
Array ( [0] => abc [1] => def )


剖析字串為變數
主要是將PHP網頁請求的$_GET或$_POST方法所傳入的Query String的網頁傳遞的編碼參數進行格式化的陣列轉換。
<?php
// 表單請求的Query String
$str4 = "user=monkey&phone=7533967";
$arr4 = parse_str($str4, $result);
print_r($result);
?>
輸出結果:
Array ( [user] => monkey [phone] => 7533967 )




2018年2月13日 星期二

PHP自定函數的使用

PHP的自定函數的名稱,可以是英文字數、數字、或底線的字元組合而成,前綴字必須是function為開頭,中間為函數名稱,括孤內為要傳遞的參數,傳遞參數的方式可以分為傳值呼叫(Call by value)或傳址呼叫(Call by reference),一般我們常見到的函數使用都是傳值呼叫的方式。接下來我們就來自定義一下我們的第一支PHP函數:

第一支PHP自定函數 (或傳值呼叫函數)
以下的範例是一個簡單與典型的傳值呼叫方式的自定義函數。在呼叫該函數時會傳入$user這個全域性變數,然而$user這個字串變數值不會因為執行該函數後,產生任何的改變。這個就是傳值呼叫函數的重要特徵。
<?php
// 我的自定函數 (傳值函數)
function my_function($name) {
  echo $name."歡迎光臨!<br/>";
  $user = "大毛";
}

// 呼叫自定函數
$user = "小明";
my_function($user);
echo $user;
?>
輸出畫面:
小明歡迎光臨!
小明


傳址呼叫函數
何謂傳址呼叫函數? 故明思義,就是傳遞參數的記憶體的參考位置給自定函數使用的意思,如果還是以上面的例子來改寫說明如下,請仔細注意my_function函數的$name參數左邊多了一個&字母,表示當再次呼叫該自定函數後,$user這個全域性字串變數值會因為執行而結果產生變化。

<?php
// 我的自定函數 (傳址函數)
function my_function(&$name) {
  echo $name."歡迎光臨!<br/>";
  $name = "大毛";
}

// 呼叫自定函數
$user = "小明";
my_function($user);
echo $user;
?>
輸出畫面:
小明歡迎光臨!
大毛



2018年1月14日 星期日

PHP日期Date的常用函數

在PHP的程式語言裡,早期就是採用Date函數來處理日期的產生、格式化以及字串轉換成日期型態。
  1. 可以利用time()或mktime()獲得當前的時間戳記
  2. 或者使用date()來針對特定日期進行格式化
  3. 若要把字串轉換成為日期就要透過strtotime()函數
以下為簡單的指令操作範例:
<?php
// 取得目前時間的timestamp
$now = time();
$now2 = mktime();

// 對現在的日期進行格式化
echo date("Y-m-d H:i:s", $now);

// 將字串轉換成日期
echo strtotime("2018-01-02");
?>

如果要採行新的作法,也可以考慮改用DateTime日期類別,PHP 5.2.x版本以後開始支援。

PHP日期DateTime的常用函數

從PHP 5.2.x開始以後, 我們可以使用DateTime類別來產生某特定日期、日期格式化與日期的加減操作, 過去習慣利用Date函數來幫我們完成這些任務。

產生今天的日期函數

<?php
// 取得目前時間的timestamp
$now = time();
$now2 = mktime();
?>

透過DateTime產生日期和日期格式化

<?php
// 建立DateTime型別的日期
//$date = DateTime("2018-01-02");
$date = date_create("2018-01-02");

// 針對DateTime型別的日期進行格式化
$date_ft = date_format($date,"Y-m-d");
echo $date_ft;
?>

運用DateTime進行日期加、減運算

<?php
// 某特定日期增加6天
$date_m6 = date_modify($date,"+6 days");
// 某特定日期減少3天
$date_m3 = date_modify($date,"-3 days");
?>
我們在透過DateTime進行日期、時間的算術運算操作時,若要將剛才生成的DateTime實體物件打印出來可以使用print_r($date_m3)來觀察該物件內存放了那些資料,要不然必須先把日期物件格式化為字串,才能順利輸出到電腦螢幕畫面上顯示。

PHP常用輸出指令

在PHP程式語言的世界裡,若要將程式執行的結果輸出到電腦螢幕上,就需要以下6個經常使用的輸出資料串流的指令。由於這些指令除了可以讓我們除錯程式碼,也可以讓我們預覽準備要傳送到列表機列印的欄位、資料、格式正確與否。

  • echo  輸出一個字串或多個字串
  • print  輸出一個字串
  • print_r  列印一個陣列
  • var_dump  輸出一個變數的相關資訊
  • die  輸出結果並且終止程式
  • exit 當參數為0時,等同die的作用

使用範例說明:

<?php
// 輸出字串
echo "你好嗎?";
print "I am fine.";

// 輸出陣列
print_r(array('apple','android'));

// 輸出變數型別、長度等明細資訊
$str = "開心果";
var_dump($str);

// 輸出變數且終止程式
$str2 = "Happy Birthday";
die($str2);

// 也可以使用exit(0)終止程式
echo $str2;
exit(0);
?>