PHP字串處理的思考與記錄

2021-07-27 10:39:59 字數 2331 閱讀 1386

判斷字串為不為空,不能使用empty,因為empty會認為』0』也是空的

$s = '0';

if(empty($s)) else

輸出

"s為空"
『0』 顯然是不為空的,所以使用empty判斷字串是否為空就是個陷阱!

後面改進為,方法一:

if(!isset($s) || $s === '')  else
輸出

$s = array();  //輸出:"s不為空"

$s = 0; //輸出:"s不為空"

$s = '0'; //輸出:"s不為空"

$s = ''; //輸出:"s為空"

$s = null; //輸出:"s為空"

$s = null; //輸出:"s為空"

$s = 'null'; //輸出:"s不為空"

陣列和數字也被判定成不為空了。

不過既然是弱型別語言,到時候這些也可以轉為字串格式來使用,所以關係不大。

但是在特殊情況下,需要更嚴格的檢查方案,則需要再改進下:

方法二:

if(!isset($s) || !is_string($s) || strlen($s) == 0)  else
先判斷有沒有賦值,然後判斷是不是字串,最後判斷字串長度是不是為0,有了三重保險,輸出:

$s = array();  //輸出:"s為空"

$s = 0; //輸出:"s為空"

$s = '0'; //輸出:"s不為空"

$s = ''; //輸出:"s為空"

$s = null; //輸出:"s為空"

$s = null; //輸出:"s為空"

$s = 'null'; //輸出:"s不為空"

這樣把非字串型別也排除在外了。

使用什麼方法判定字串為不為空要根據具體需求,如果對型別不那麼嚴格,用方法一;如果只允許字串,使用方法二。

$is_space = ctype_space($text);
如果全是空格,返回true;如果不是,返回false。

$test_array = explode(' ', $test_string);
如果使用上面的方式,那就太單純了,假如字串包含多個空格怎麼辦?

需要使用以下方法:

$test_array = preg_split('#\s+#', $test_string);
$a = '0x000000010184f2fc';

// 方法一

$b = intval($a, 16);

var_dump($b); // 輸出: 4320457468

// 方法二

$c = base_convert($a, 16, 10);

var_dump($c); // 輸出: 4320457468

intval()函式可以將字串轉為10進製整數

引數一為要轉換的數字(字串型別)

引數二是可選引數,用來指定基底,預設是10

也就是說,字串為『0x』開頭,是16進製制格式,引數二要指定為16

字串為『0』開頭,是8進製格式,引數二要指定為8

返回值為10進製整數;如果不能識別該字串,則返回0

base_convert()函式也可以用來轉換進製,只不過返回的還是字串型別的數字

引數一為要轉換的數字(字串型別)

引數二為當前的進製

引數三為要轉換的進製

返回值為相應進製的數字(字串型別);如果字串不能識別,則返回『0』。

方法一,使用正規表示式判斷:

$test = "   \t   ";

$pattern = '/^(\s+)$/';

$is_match = preg_match($pattern, $test);

if ($is_match) else

// 輸出:都是空格

『\t』 製表符也是空格。

方法二,使用ctype_space()函式:

$test = "   \t   ";

$is_match = ctype_space($test);

if ($is_match) else

php 字串處理

一 字串格式化 1.trim 可以出去字串開始位置和結束位置的空格,並返回結果字串 ltrim 除去左邊空格 rtrim 除去右邊空格 2.nl2br 用代替字串中的換行符 3.printf 將乙個格式化的字串輸出到瀏覽器中 sprintf 返回乙個格式化的字串 例 printf total amo...

PHP字串處理

雙引號中的內容可以被解釋與替換,單引號中的字元當做普通字元處理 使用 或 一大波函式將來襲。strlen 計算字串長度 substr string str,int start,int length 從start出擷取長度為length的字串 strcmp str1 str2 區分大小寫 strcas...

php字串處理

字串擷取 substr 對字串進行指定數量的擷取 strchr strstr別名 查詢乙個字串在另乙個字串中第一次出現,返回字串到結尾 stristr strrchr 查詢乙個這符串在另乙個字串中最後出現的位置 strpos 從頭查詢乙個字串在另乙個字串中第一次出現的位置,區分大小寫 stripos...