雖然 PHP 8 保留了許多 PHP 7 及更早版本的許多好用字串處理功能,但在 PHP 8 中也導入了許多新的字串處理函數和功能,以增強其功能和靈活性,以下是一些亮點:
新的字串函數:PHP 8 新增了多個字串處理函數,包括:
- str_contains(): 檢查字串是否包含另一個字串。
- str_starts_with(): 檢查字串是否以另一個字串開頭。
- str_ends_with(): 檢查字串是否以另一個字串結尾。
- str_Uuid():生成 UUID。
- countchars(): 計算字串中字元的個數。
- strlen_mb():計算多位元組字串的長度。
增強的字串比較:PHP 8 改善了字串比較函數的功能,包括:
- strcasecmp() 和 strnatcasecmp() 現在支援多位元組字串。
- 新增 strcasecmp_locale() 和 strnatcasecmp_locale() 函數,可根據區域設定進行字串比較。
正規表示式:PHP 8 對正規表示式支援進行了多項改進,包括:
- 新增 preg_last_error() 函數,可取得最近正則表示式比對的錯誤碼。
- 新增 preg_match_all() 函數的 flags 參數,可指定額外的比對模式。
其他改進:PHP 8 還對字串處理進行了其他改進,包括:
- 改善了字串轉換函數的效能。
- 修復了一些與字串處理相關的錯誤。
以下是一些 PHP 8 字串處理新功能的範例:
// 使用 str_contains() 檢查字串是否包含另一個字串
$str = "Hello, world!";
if (str_contains($str, "world")) {
echo "The string contains 'world'\n";
}
// 使用 str_starts_with() 檢查字串是否以另一個字串開頭
$str = "This is an example";
if (str_starts_with($str, "This")) {
echo "The string starts with 'This'\n";
}
// 使用 str_ends_with() 檢查字串是否以另一個字串結尾
$str = "This is an example";
if (str_ends_with($str, "example")) {
echo "The string ends with 'example'\n";
}
// 使用 str_Uuid() 生成 UUID
$uuid = str_Uuid();
echo "Generated UUID: $uuid\n";
// 使用 countchars() 計算字串中字元的個數
$str = "Hello, world!";
$numChars = countchars($str);
echo "Number of characters: $numChars\n";
// 使用 strlen_mb() 計算多位元組字串的長度
$str = "你好,世界!";
$numChars = strlen_mb($str);
echo "Number of characters: $numChars\n";
// 使用 strcasecmp() 進行多位元組字串比較
$str1 = "你好";
$str2 = "你 Hao";
$result = strcasecmp($str1, $str2);
if ($result == 0) {
echo "The strings are equal\n";
} else if ($result < 0) {
echo "The first string is less than the second string\n";
} else {
echo "The first string is greater than the second string\n";
}
// 使用 preg_last_error() 取得最近正規表示式比對的錯誤碼
$pattern = "/\d+/";
$subject = "This string has 123 numbers";
if (preg_match($pattern, $subject)) {
echo "The pattern was found\n";
} else {
$errorCode = preg_last_error();
echo "Error code: $errorCode\n";
}
// 使用 preg_match_all() 的 flags 參數指定額外的匹配模式
$pattern = "/\d+/g";
$subject = "This string has 123 and 456 numbers";
$matches = preg_match_all($pattern, $subject, $output, PREG_OFFSET_CAPTURE);
print_r($matches);
這些只是 PHP 8 字串處理新功能的幾個示例。有關更多資訊,請參閱 PHP 官方文件。
當然,誠如第一段提到的,PHP 8 也保留了許多 PHP 7 及更早之前版本好用的字串處理功能,舉例來說:
字串擷取
- substr(): 從字串中擷取子字串。
- str_split(): 將字串拆分成字元陣列。
- strlen(): 計算字串的長度。
字串轉換
- trim(): 移除字串兩端的空白字元。
- ltrim(): 移除字串左端的空白字元。
- rtrim(): 移除字串右端的空白字元。
- strtolower(): 將字串轉換為小寫。
- strtoupper(): 將字串轉換為大寫。
- ucfirst(): 將字串的第一個字元轉換為大寫。
- lcfirst(): 將字串的第一個字元轉換為小寫。
字串比較
- strcmp(): 比較兩個字串。
- strcasecmp(): 不區分大小寫地比較兩個字串。
- strncmp(): 比較兩個字串的前 N 個字元。
- strncasecmp(): 不區分大小寫地比較兩個字串的前 N 個字元。
字串搜尋
- strpos(): 在字串中搜尋另一個字串的位置。
- stripos(): 不區分大小寫地在字串中搜尋另一個字串的位置。
- strrpos(): 在字串中從右向左搜尋另一個字串的位置。
- strripos(): 不區分大小寫地在字串中從右向左搜尋另一個字串的位置。
字串替換
- str_replace(): 將字串中的所有出現字串替換為另一個字串。
- str_ireplace(): 不區分大小寫地將字串中的所有出現字串替換為另一個字串。
字串格式化
- sprintf(): 格式化字串並輸出。
- sscanf(): 從字串中擷取資料。
這些好用的功能有許多都是之前介紹過的,以下是一些 PHP8 保留的常用傳統字串處理函數的範例:
// 使用 substr() 從字串中擷取子字串
$str = "Hello, world!";
$subStr = substr($str, 7, 5);
echo $subStr; // Output: world
// 使用 str_split() 將字串拆分成字元陣列
$str = "Hello, world!";
$chars = str_split($str);
print_r($chars); // Output: Array ( [0] => H [1] => e [2] => l [3] => l [4] => o [5] => , [6] => [7] => w [8] => o [9] => r [10] => l [11] => d [12] => ! )
// 使用 strlen() 計算字串的長度
$str = "Hello, world!";
$length = strlen($str);
echo $length; // Output: 13
// 使用 trim() 移除字串兩端的空白字元
$str = " Hello, world! ";
$trimmedStr = trim($str);
echo $trimmedStr; // Output: Hello, world!
// 使用 strtolower() 將字串轉換為小寫
$str = "HELLO, WORLD!";
$lowerStr = strtolower($str);
echo $lowerStr; // Output: hello, world!
// 使用 strtoupper() 將字串轉換為大寫
$str = "hello, world!";
$upperStr = strtoupper($str);
echo $upperStr; // Output: HELLO, WORLD!
// 使用 ucfirst() 將字串的第一個字元轉換為大寫
$str = "hello, world!";
$ucfirstStr = ucfirst($str);
echo $ucfirstStr; // Output: Hello, world!
// 使用 lcfirst() 將字串的第一個字元轉換為小寫
$str = "HELLO, WORLD!";
$lcfirstStr = lcfirst($str);
echo $lcfirstStr; // Output: hELLO, WORLD!
以上關於 PHP 8 新的字串處理及保留的好用字串處理功能,希望對你有幫助囉!
延伸閱讀