一php str_replace preg
需要我們用程式處理的資料並不總是預先以資料庫思維設計的,或者說是無法用資料庫的結構去存儲的。
例如模版引擎解析模版、垃圾敏感資訊過濾等等。
一般這種情況,我們用正規按我們的規則去匹配preg_match、替換preg_replace。
但一般的應用中,無非是些資料庫CRUD,正規擺弄的機會很少。
根據前面說的,兩個場景:統計分析,用匹配;處理用替換。
PHP preg_replace() 正規替換,與Javascript 正規替換不同,PHP preg_replace() 預設是取代所有符號符合條件的元素。
大部分語言的正規表示式都是差不多的,不過也有細微的差異。
PHP 正規表示式
preg_replace (正则表达式, 替换成, 字符串, 最大替换次数【默认-1,无数次】, 替换次数)
正規字元 | 正規解釋 |
---|---|
#\ | 將下一個字元標記為特殊字符、或一個原義字元、或一個向後引用、或一個八進位轉義符。例如,“\n”匹配字元“n”。 “\\n”符合一個換行符號。序列“\\”符合“\”而“\(”則符合“(”。 |
#^ | 符合輸入字串的開始位置。如果設定了RegExp物件的Multiline屬性,^也符合「\n」或「\r」之後的位置。設定了RegExp物件的Multiline屬性,$也符合「\n」或「\r」之前的位置。次或多次。子表達式一次或多次。 #? |
{n,m} | 符合除“\n”之外的任何單一字符。 | ##(pattern) | 符合pattern並取得此符合。 …$9屬性。若要匹配圓括號字符,請使用“\(”或“\)”。
(?:pattern) | |
(?=pattern) | |
(?!pattern) | |
(? | (?反向否定預查,與正向否定預查類似,只是方向相反。例如“(? | x|y | 符合x或y。例如,「z|food」能匹配「z」或「food」。 「(z|f)ood」則符合「zood」或「food」。
[xyz] | |
[^xyz] | 負值字元集合。匹配未包含的任意字元。例如,「[^abc]」可以符合「plain」中的「plin」。 |
[a-z] | 字元範圍。符合指定範圍內的任意字元。例如,「[a-z]」可以符合「a」到「z」範圍內的任意小寫字母字元。注意:只有連字符在字符組內部時,並且出兩個字符之間時,才能表示字符的範圍; 如果出字符組的開頭,則只能表示連字符本身. |
負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,「[^a-z]」可以符合任何不在「a」到「z」範圍內的任意字元。 | |
符合一個單字邊界,也就是指單字和空格間的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 | |
符合非單字邊界。 “er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 | |
符合由x指明的控製字元。例如,\cM符合一個Control-M或回車符。 x的值必須為A-Z或a-z之一。否則,將c視為一個原義的「c」字元。 | |
符合一個數字字元。等價於[0-9]。 | |
符合一個非數字字元。等價於[^0-9]。 | |
符合一個換頁符號。等價於\x0c和\cL。 | |
符合一個換行符號。等價於\x0a和\cJ。 | |
符合一個回車符。等價於\x0d和\cM。 | |
符合任何空白字符,包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。 | |
符合任何非空白字元。等價於[^ \f\n\r\t\v]。 | |
符合一個製表符。等價於\x09和\cI。 | |
符合一個垂直製表符。等價於\x0b和\cK。 | |
符合包括下劃線的任何單字字元。等價於「[A-Za-z0-9_]」。 | |
符合任何非單字字元。等價於「[^A-Za-z0-9_]」。 | |
符合n,其中n為十六進位轉義值。十六進制轉義值必須為確定的兩個數字長。例如,“\x41”匹配“A”。 「\x041」則等價於「\x04&1」。正規表示式中可以使用ASCII編碼。 | |
符合num,其中num是正整數。對所獲取的匹配的引用。例如,「(.)\1」會符合兩個連續的相同字元。 | |
標識一個八進位轉義值或一個向後引用。如果\n之前至少n個取得的子表達式,則n為向後引用。否則,如果n為八進制數字(0-7),則n為一個八進制轉義值。 | |
標識一個八進位轉義值或一個向後引用。如果\nm之前至少有nm個得到子表達式,則nm為向後引用。如果\nm之前至少有n個獲取,則n為一個後面接文字m的向後引用。如果前面的條件都不滿足,若n和m均為八進位數字(0-7),則\nm將符合八進位轉義值nm。 | |
如果n為八進位數字(0-7),且m和l均為八進位數字(0-7),則符合八進位轉義值nml。 | |
符合n,其中n是一個用四個十六進位數字表示的Unicode字元。例如,\u00A9符合版權符號(©)。 |
参数 | 描述 |
---|---|
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。对替换数进行计数的变量。 |
例子 1
使用带有数组和 count 变量的 str_replace() 函数:
<?php $arr = array("blue","red","green","yellow"); print_r(str_replace("red","pink",$arr,$i)); echo "替换数:$i"; ?>
例子 2
使用带有需要替换的元素少于查找到的元素的 str_replace() 函数:
<?php $find = array("Hello","world"); $replace = array("B"); $arr = array("Hello","world","!"); print_r(str_replace($find,$replace,$arr)); ?>
四.php str_irreplace
实例
把字符串 "Hello world!" 中的字符 "world" 替换为 "Shanghai":
<?php echo str_replace("world","Shanghai","Hello world!"); ?>
定义和用法
str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。
该函数必须遵循下列规则:
如果搜索的字符串是数组,那么它将返回数组。
如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。
如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。
注释:该函数区分大小写。请使用 str_ireplace() 函数执行不区分大小写的搜索。
注释:该函数是二进制安全的。
语法
str_replace(find,replace,string,count)
参数 | 描述 |
---|---|
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。对替换数进行计数的变量。 |
例子 1
使用带有数组和 count 变量的 str_replace() 函数:
<?php $arr = array("blue","red","green","yellow"); print_r(str_replace("red","pink",$arr,$i)); echo "替换数:$i"; ?>
例子 2
使用带有需要替换的元素少于查找到的元素的 str_replace() 函数:
<?php $find = array("Hello","world"); $replace = array("B"); $arr = array("Hello","world","!"); print_r(str_replace($find,$replace,$arr)); ?>
五 .php str_split
PHP函数split()的基本语法为:array split ( string $pattern, string $string [, int $limit] )。我们向大家举了两个例子来具体讲解这个函数的使用方法。
对于初学者来说,掌握PHP中常用函数的用法,是其继续学习的基础。今天我们就为大家详细介绍有关PHP函数split()的一些使用方法,希望大家能通过这篇文章介绍的内容增加自己的知识库。
说明
array split ( string $pattern, string $string [, int $limit] )
提示
preg_split() 函数使用了 Perl 兼容正则表达式语法,通常是比PHP函数split()更快的替代方案。如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费。
本函数返回一个字符串数组,每个单元为 string 经区分大小写的正则表达式 pattern 作为边界分割出的子串。如果设定了 limit,则返回的数组最多包含 limit 个单元,而其中最后一个单元包含了 string 中剩余的所有部分。如果出错,则 split() 返回 FALSE。
将 /etc/passwd 中的前四个字段分割出来:
例 1839. PHP函数split()例子
深入PHP nl2br()格式化输出的详解
<?php list($user, $pass, $uid, $gid, $extra) = split (":", $passwd_line, 5); ?>
如果字符串中有 n 个与 pattern 匹配的项目,则返回的数组将包含 n+1 个单元。例如,如果没有找到 pattern,则会返回一个只有一个单元的数组。当然,如果 string 为空也是这样。
解析可能用斜线,点,或横线分割的日期:
例 1840. PHP函数split()例子
<?php // 分隔符可以是斜线,点,或横线 $date = "04/30/1973"; list($month, $day, $year) = split ('[/.-]', $date); echo "Month: $month; Day: $day; Year: $year<br />\n"; ?>
想仿效 Perl 中类似的 @chars = split('', $str) 行为,请参考 preg_split() 或 str_split() 函数中的例子。
注意 pattern 是一个正则表达式。如果想要用的分割字符是正则表达式中的特殊字符,要先将其转义。如果觉得PHP函数split()(或其它任何 regex 函数)行为古怪的话,请阅读包含在 PHP 发行包中 regex/ 子目录下的 regex.7 文件。该文件是手册页面格式,可以用类似 man /usr/local/src/regex/regex.7 的命令来阅读

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具