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;
?>
輸出畫面:
小明歡迎光臨!
大毛