溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php有哪些則替換函數(shù)

發(fā)布時間:2021-06-03 17:42:05 來源:億速云 閱讀:208 作者:Leah 欄目:編程語言

這期內(nèi)容當中小編將會給大家?guī)碛嘘Pphp有哪些則替換函數(shù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。


php正則替換函數(shù)

1、preg_replace()函數(shù)

preg_replace 函數(shù)執(zhí)行一個正則表達式的搜索和替換。

語法

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

搜索 subject 中匹配 pattern 的部分, 以 replacement 進行替換。

參數(shù)說明:

  • $pattern: 要搜索的模式,可以是字符串或一個字符串數(shù)組。

  • $replacement: 用于替換的字符串或字符串數(shù)組。

  • $subject: 要搜索替換的目標字符串或字符串數(shù)組。

  • $limit: 可選,對于每個模式用于每個 subject 字符串的最大可替換次數(shù)。 默認是-1(無限制)。

  • $count: 可選,為替換執(zhí)行的次數(shù)。

返回值

  • 如果 subject 是一個數(shù)組, preg_replace() 返回一個數(shù)組, 其他情況下返回一個字符串。

  • 如果匹配被查找到,替換后的 subject 被返回,其他情況下 返回沒有改變的 subject。如果發(fā)生錯誤,返回 NULL。

示例:

<?php
$string = 'google 123, 456';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = 'php ${2},$3';
echo preg_replace($pattern, $replacement, $string);
?>

輸出:

php 123,456

2、preg_filter()函數(shù)

preg_filter 函數(shù)用于執(zhí)行一個正則表達式搜索和替換。

語法

mixed preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

preg_filter() 等價于 preg_replace() ,但它僅僅返回與目標匹配的結果。

示例:比較preg_filter() 和preg_replace()

<?php$subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4'); 
$pattern = array('/\d/', '/[a-z]/', '/[1a]/'); 
$replace = array('A:$0', 'B:$0', 'C:$0'); 
 
echo "preg_filter 返回值:\n";print_r(preg_filter($pattern, $replace, $subject)); 
 
echo "preg_replace 返回值:\n";print_r(preg_replace($pattern, $replace, $subject)); 
?>

輸出:

preg_filter 返回值:
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [7] => A:4
)
preg_replace 返回值:
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [5] => A
    [6] => B
    [7] => A:4
)

可以看出 preg_filter 只返回匹配結果,不匹配的直接忽略,而 preg_replace 將不匹配的結果 'A' 'B' 元素也一起返回。

3、preg_replace_callback()函數(shù)

preg_replace_callback 函數(shù)執(zhí)行一個正則表達式搜索并且使用一個回調(diào)進行替換。

語法

mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )

這個函數(shù)的行為除了可以指定一個 callback 替代 replacement 進行替換字符串的計算,其他方面等同于 preg_replace()。

參數(shù)說明:

  • $pattern: 要搜索的模式,可以使字符串或一個字符串數(shù)組。

  • $callback: 一個回調(diào)函數(shù),在每次需要替換時調(diào)用,調(diào)用時函數(shù)得到的參數(shù)是從subject 中匹配到的結果。

  • $subject: 要搜索替換的目標字符串或字符串數(shù)組。

  • $limit: 可選,對于每個模式用于每個 subject 字符串的最大可替換次數(shù)。 默認是-1(無限制)。

  • $count: 可選,為替換執(zhí)行的次數(shù)。

返回值

  • 如果subject是一個數(shù)組, preg_replace_callback()返回一個數(shù)組,其他情況返回字符串。 錯誤發(fā)生時返回 NULL。

  • 如果查找到了匹配,返回替換后的目標字符串(或字符串數(shù)組), 其他情況subject 將會無變化返回。

示例:

<?php
header("Content-type: text/html; charset=utf-8");
// 將文本中的年份增加一年.
$text = "愚人節(jié)是 04/01/2020<br>";
$text.= "去年元旦是 12/24/2019<br>";
// 回調(diào)函數(shù)
function next_year($matches)
{
  // 通常: $matches[0]是完成的匹配
  // $matches[1]是第一個捕獲子組的匹配
  // 以此類推
  return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
            "|(\d{2}/\d{2}/)(\d{4})|",
            "next_year",
            $text);
 
?>

輸出:

愚人節(jié)是 04/01/2021
去年元旦是 12/24/2020

4、preg_replace_callback_array()函數(shù)

preg_replace_callback_array 函數(shù)執(zhí)行一個正則表達式搜索并且使用一個回調(diào)進行替換。

語法

mixed preg_replace_callback_array ( array $patterns_and_callbacks , mixed $subject [, int $limit = -1 [, int &$count ]] )

函數(shù)類似于 preg_replace_callback(), 但它是基于每個模式匹配來回調(diào)函數(shù)進行替換。

參數(shù)說明:

  • $patterns_and_callbacks: 關聯(lián)數(shù)組,key(模式) => value(回調(diào)函數(shù))

  • $subject: 要查找的和替換的字符串或數(shù)組。

  • $limit: 可選,每個模式最大的替換次數(shù),默認為 -1(無限制,全部匹配完)。

  • $count: 可選,指定替換的次數(shù)。

返回值

  • 如果 subject 是一個數(shù)組返回數(shù)組,否則返回字符串。發(fā)生錯誤則返回 NULL。

  • 如果查找到了匹配,返回替換后的目標字符串(或字符串數(shù)組), 其他情況 subject 將會無變化返回。

示例:

<?php
$subject = 'Aaaaaa Bbb';
 
preg_replace_callback_array(
    [
        '~[a]+~i' => function ($match) {
            echo strlen($match[0]), ' matches for "a" found', PHP_EOL;
        },
        '~[b]+~i' => function ($match) {
            echo strlen($match[0]), ' matches for "b" found', PHP_EOL;
        }
    ],
    $subject
);
?>

輸出:

6 matches for "a" found
3 matches for "b" found

上述就是小編為大家分享的php有哪些則替換函數(shù)了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

php
AI