您好,登錄后才能下訂單哦!
這期內(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è)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。