日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php+ksort+返回true,PHP preg_replace函数

發(fā)布時(shí)間:2023/12/3 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php+ksort+返回true,PHP preg_replace函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。