php+ksort+返回true,PHP preg_replace函数
mixed preg_replace( mixed pattern, mixed replacement, mixed subject [, int limit] )
在PHP中用來執(zhí)行正則表達(dá)式的匹配以及替換的函數(shù)。可以返回一個(gè)正則表達(dá)式轉(zhuǎn)換后的值。
在subject中搜索pattern模式的匹配項(xiàng),并用replacement模式進(jìn)行替換。如果指定了 limit,則僅替換limit個(gè)匹配,如果省略limit或者其值為 -1,則所有的匹配項(xiàng)都會(huì)被替換。
參數(shù)
pattern
要搜索的模式。可以使一個(gè)字符串或字符串?dāng)?shù)組。
可以使用一些PCRE修飾符,包括被棄用的’e'(PREG_REPLACE_EVAL),可以為這個(gè)函數(shù)指定。
replacement
用于替換的字符串或字符串?dāng)?shù)組。如果這個(gè)參數(shù)是一個(gè)字符串,并且pattern是一個(gè)數(shù)組,那么所有的模式都使用這個(gè)字符串進(jìn)行替換。如果pattern和replacement都是數(shù)組,每個(gè)pattern使用replacement中對(duì)應(yīng)的元素進(jìn)行替換。如果replacement中的元素比pattern中的少,多出來的pattern使用空字符串進(jìn)行替換。
replacement中可以包含后向引用\\n或(php 4.0.4以上可用)$n,語法上首選后者。 每個(gè)這樣的引用將被匹配到的第n個(gè)捕獲子組捕獲到的文本替換。 n可以是0-99,\\0和$0代表完整的模式匹配文本。捕獲子組的序號(hào)計(jì)數(shù)方式為:代表捕獲子組的左括號(hào)從左到右, 從1開始數(shù)。如果要在replacement中使用反斜線,必須使用4個(gè)(“\\\\”,譯注:因?yàn)檫@首先是php的字符串,經(jīng)過轉(zhuǎn)義后,是兩個(gè),再經(jīng)過正則表達(dá)式引擎后才被認(rèn)為是一個(gè)原文反斜線)。
當(dāng)在替換模式下工作并且后向引用后面緊跟著需要是另外一個(gè)數(shù)字(比如:在一個(gè)匹配模式后緊接著增加一個(gè)原文數(shù)字),不能使用\\1這樣的語法來描述后向引用。比如, \\11將會(huì)使preg_replace()不能理解你希望的是一個(gè)\\1后向引用緊跟一個(gè)原文1,還是一個(gè)\\11后向引用后面不跟任何東西。 這種情況下解決方案是使用\${1}1。這創(chuàng)建了一個(gè)獨(dú)立的$1后向引用, 一個(gè)獨(dú)立的原文1。
當(dāng)使用被棄用的 e 修飾符時(shí), 這個(gè)函數(shù)會(huì)轉(zhuǎn)義一些字符(即:’、”、\ 和 NULL) 然后進(jìn)行后向引用替換。當(dāng)這些完成后請(qǐng)確保后向引用解析完后沒有單引號(hào)或雙引號(hào)引起的語法錯(cuò)誤(比如: ‘strlen(\’$1′)+strlen(“$2″)’)。確保符合PHP的字符串語法,并且符合eval語法。因?yàn)樵谕瓿商鎿Q后,引擎會(huì)將結(jié)果字符串作為php代碼使用eval方式進(jìn)行評(píng)估并將返回值作為最終參與替換的字符串。
subject
要進(jìn)行搜索和替換的字符串或字符串?dāng)?shù)組。
如果subject是一個(gè)數(shù)組,搜索和替換回在subject的每一個(gè)元素上進(jìn)行, 并且返回值也會(huì)是一個(gè)數(shù)組。
limit
每個(gè)模式在每個(gè)subject上進(jìn)行替換的最大次數(shù)。默認(rèn)是-1(無限)。
count
如果指定,將會(huì)被填充為完成的替換次數(shù)。
返回值
如果subject是一個(gè)數(shù)組, preg_replace()返回一個(gè)數(shù)組, 其他情況下返回一個(gè)字符串。
如果匹配被查找到,替換后的subject被返回,其他情況下 返回沒有改變的subject。如果發(fā)生錯(cuò)誤,返回 NULL 。
范例
#1 使用后向引用緊跟數(shù)值原文
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>
0
1
2
3
4
5
$string='April 15, 2003';
$pattern='/(\w+) (\d+), (\d+)/i';
$replacement='${1}1,$3';
echopreg_replace($pattern,$replacement,$string);
?>
以上例程會(huì)輸出:April1,2003
#2 preg_replace()中使用基于索引的數(shù)組
$string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
?>
0
1
2
3
4
5
6
7
8
9
10
11
$string='The quick brown fox jumped over the lazy dog.';
$patterns=array();
$patterns[0]='/quick/';
$patterns[1]='/brown/';
$patterns[2]='/fox/';
$replacements=array();
$replacements[2]='bear';
$replacements[1]='black';
$replacements[0]='slow';
echopreg_replace($patterns,$replacements,$string);
?>
以上例程會(huì)輸出:The bear black slow jumped over the lazy dog.
對(duì)模式和替換內(nèi)容按key進(jìn)行排序我們可以得到期望的結(jié)果。
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
?>
0
1
2
3
4
ksort($patterns);
ksort($replacements);
echopreg_replace($patterns,$replacements,$string);
?>
以上例程會(huì)輸出:The slow black bear jumped over the lazy dog.
#3 替換一些值
$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',
'/^\s*{(\w+)}\s*=/');
$replace = array ('\3/\4/\1\2', '$\1 =');
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');
?>
0
1
2
3
4
5
$patterns=array('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',
'/^\s*{(\w+)}\s*=/');
$replace=array('\3/\4/\1\2','$\1 =');
echopreg_replace($patterns,$replace,'{startDate} = 1999-5-27');
?>
以上例程會(huì)輸出:$startDate = 5/27/1999
#4 剝離空白字符
$str = 'foo?? o';
$str = preg_replace('/\s\s+/', ' ', $str);
// 將會(huì)改變?yōu)?#39;foo o'
echo $str;
?>
0
1
2
3
4
5
$str='foo?? o';
$str=preg_replace('/\s\s+/',' ',$str);
// 將會(huì)改變?yōu)?#39;foo o'
echo$str;
?>
#5 使用參數(shù)count
$count = 0;
echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count);
echo $count; //3
?>
0
1
2
3
4
$count=0;
echopreg_replace(array('/\d/','/\s/'),'*','xp 4 to',-1,$count);
echo$count;//3
?>
以上例程會(huì)輸出:
xp***to
3
Note
當(dāng)使用數(shù)組形式的pattern和replacement時(shí), 將會(huì)按照key在數(shù)組中出現(xiàn)的順序進(jìn)行處理. 這不一定和數(shù)組的索引順序一致. 如果你期望使用索引對(duì)等方式用replacement對(duì)pattern進(jìn)行替換, 你可以在調(diào)用preg_replace()之前對(duì)兩個(gè)數(shù)組各進(jìn)行一次ksort()排序.
總結(jié)
以上是生活随笔為你收集整理的php+ksort+返回true,PHP preg_replace函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 断情绝爱的网名100个
- 下一篇: phpexcel 日期 时分秒_thin