PHP Conference Japan 2024

mb_ereg_replace_callback

(PHP 5 >= 5.4.1, PHP 7, PHP 8)

mb_ereg_replace_callback使用回呼函式執行多位元組支援的正規表示式搜尋和取代

說明

mb_ereg_replace_callback(
    字串 $pattern,
    可呼叫 $callback,
    字串 $string,
    ?字串 $options = null
): 字串|false|null

string 中搜尋符合 pattern 的字串,然後將符合的文字替換為 callback 函式的輸出。

此函式的行為幾乎與 mb_ereg_replace() 相同,除了不是使用 replacement 參數,而是指定一個 callback 參數。

參數

pattern

正規表示式模式。

pattern 中可以使用多位元組字元。

callback

一個回呼函式,它將被呼叫並傳入一個在 string 字串中符合元素的陣列。此回呼函式應回傳替換字串。

您通常只需要在一個地方使用 mb_ereg_replace_callback()callback 函式。在這種情況下,您可以使用匿名函式在呼叫 mb_ereg_replace_callback() 中宣告回呼函式。透過這種方式,您可以將呼叫的所有資訊都放在一個地方,並且不會讓函式命名空間中充斥著其他地方沒有使用的回呼函式名稱。

string

正在檢查的 字串

options

搜尋選項。有關說明,請參見 mb_regex_set_options()

回傳值

成功時回傳結果 字串,錯誤時回傳 false。如果 string 對目前的編碼無效,則回傳 null

更新日誌

版本 說明
8.0.0 options 現在可以為 null。
7.1.0 此函式會檢查 string 是否對目前的編碼有效。

範例

範例 #1 mb_ereg_replace_callback() 範例

<?php
// 這段文字是在 2002 年使用的
// 我們想將其更新到 2003 年
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// 回呼函式
function next_year($matches)
{
// 與往常一樣:$matches[0] 是完整的匹配
// $matches[1] 是第一個子模式的匹配
// 以 '(...)' 括起來,依此類推
return $matches[1].($matches[2]+1);
}
echo
mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
"next_year",
$text);

?>

上述範例將輸出

April fools day is 04/01/2003
Last christmas was 12/24/2002

範例 #2 使用匿名函式的 mb_ereg_replace_callback()

<?php
// 這段程式碼寫於 2002 年
// 我們希望將它更新至 2003 年
$text = "愚人節是 04/01/2002\n";
$text.= "去年聖誕節是 12/24/2001\n";

echo
mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
function (
$matches) {
return
$matches[1].($matches[2]+1);
},
$text);
?>

備註

注意事項:

此函式會使用內部編碼或 mb_regex_encoding() 指定的字元編碼。

參見

新增備註

使用者貢獻的備註

此頁面沒有使用者貢獻的備註。
To Top