PHP 8 字串處理

雖然 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 新的字串處理及保留的好用字串處理功能,希望對你有幫助囉!

延伸閱讀

© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012