如何在PHP中使用正则表达式进行查找替换_php技巧_脚本之家

4.per正则函数 1.preg_grep函数 preg_grep(pattern,array inputState of Qatar;
输入数组input中追寻匹配格局pattern的字串,并将有所的相称字符串重临。再次回到值便是具有相称的字符串组成的数组。
2.preg_match函数 preg_match(pattern,string subject,[array matches]State of Qatar该函数在subject字符串中研究相配pattern的字符串。若是找到则赶回三个非零值,不然再次来到零值。假设接纳了可选择matches,那么相配的字符串将被平放第八个因素的职责,可以用$matches[0]来读取,圆括号相称的结果也按梯次放在此个数组中,第多少个是$matches[1],第一个是$matches[2],依次类推。
3.preg_match_all函数 preg_match_all(pattern,subject,array
matches,[int order]卡塔尔该函数在subject字符串中寻找相配pattern的互不重叠的文书,找到了非常的文本则赶回相配文本的个数,不然重回0。相配文本被放在二维数组matches中,matches[0]中寄存的是兼具适合的字符串。各类嵌入的子格局相配的结果依次放在数组matches[1]~[n]中。
order参数可选,可取的值为PREG_PATTERN_ORDER和PREG_SET_ORDER。
4.preg_replace函数 preg_replace(pattern,replacement,subject,[int
limit]卡塔尔该函数将subject中相符pattern格局的局地替换到replacement,重返值类型和subject类型相符,借使有替换,则赶回替换后的值,反之则赶回原本的值。
参数能够是数组也能够是变量,有三种状态:
1只要subject参数是数组类型。函数对每二个数组成分举行交替操作;
2假设pattern是数组则函数依据每三个pattern中的类型举行替换;
3假诺pattern和replacement都是数组,则按多个数组中的成分对应产生替换;
4假设replacement中的成分个数少于pattern中的元素个数。那么缺乏的大器晚成对将有空字符串来代替。
5.preg_split函数 preg_split(pattern,subject,[int limit][flages]卡塔尔(قطر‎该函数以pattern定义的格局为分隔符将subject字符串分隔为多少个部分,重回数组,在这之中寄存被分隔后的字符串。limit可约束重临字符串的多寡,假如设置为-1象征对回到的字符串数目不加任何限定。flags也是可选拔,其有多少个值:PREG_SPLIT_NO_EMPTY设定函数不回来空字符串,PEPAJEROG_SPLIT_DELIM_CAPTURE,该选择设定pattern中的嵌入子形式也会被函数相称。

1. preg_match — 推行三个正则表达式相称int preg_match ( string
$pattern , string $subject [, array &$matches [, int $flags = 0 [,
int $offset = 0 ]]] 卡塔尔(قطر‎搜索subject与pattern给定的正则表明式的三个相配.
pattern:要寻觅的格局,字符串类型。subject :输入字符串。
matches:假诺提供了参数matches,它将被填充为寻觅结果。
$matches[0]将蕴涵完整形式相称到的文件,
$matches[1]将蕴涵第3个捕获子组相配到的文件,依此类推。flags:flags能够棉被服装置为以下标志值:PREG_OFFSET_CAPTURE
要是传递了那么些标识,对于每八个产出的相称重临时会附加字符串偏移量。
注意:那会变动填充到matches参数的数组,使其各种成分变为叁个由
第0个成分是相称到的字符串,首个因素是该相配字符串
在对象字符串subject中的偏移量。offset:日常,搜索从指标字符串的起第壹人置上马。可选参数
offset 用于
钦赐从指标字符串的某部未知开头寻觅。重回值:preg_match(State of Qatar重临 pattern
的合作次数。 它的值将是0次或1次,因为 preg_match(卡塔尔在率先次相称后
将会终止寻觅。
preg_match_all(卡塔尔(قطر‎不相同于此,它会直接寻找subject直到达到最后。
假设发生错误 preg_match(卡塔尔国再次回到 FALSE。示例:复制代码 代码如下:

2.preg_match_all — 实施一个大局正则表明式相称int preg_match_all (
string $pattern , string $subject [, array &$matches [, int $flags =
PREG_PATTERN_ORDER [, int $offset = 0 ]]]
State of Qatar搜索subject中具有相称pattern给定正则表达式
的协作结果同期将它们以flag钦命顺序输出到matches中. 在第二个地位格外找到后,
子种类继续从最终二遍相称岗位找寻.pattern:要搜求的方式,字符串方式。subject
:输入字符串。 matches:多维数组,作为出口参数输出全体相称结果,
数组排序通过flags钦定。flags:能够组合上边标识使用(注意不能够同一时间利用PREG_PATTERN_ORDER和PREG_SET_OSportageDE纳瓦拉State of Qatar,若无给定排序标志,假定设置为PREG_PATTERN_ORDER:PREG_PATTERN_O奥迪Q3DE奥迪Q5:结果排序为$matches[0]保存完好格局的享有相称,
$matches[1]保存第三个子组的持有相称,就那样类推。PREG_SET_OKugaDE奥迪Q7:结果排序为$matches[0]富含第2回匹配获得的具备相称,
$matches[1]是富含首回相称到的享有相配的数组,就那样类推。PREG_OFFSET_CAPTURE:假如这些符号被传送,每种开采的合营重临时会扩张它相对目的字符串的偏移量。
注意那会改动matches中的每三个合作结果字符串成分,使其
成为三个第0个成分为 相称结果字符串,首个因素为
相称结果字符串在subject中的偏移量。再次来到值:重临完整相配次数,也许大器晚成旦发生错误再次回到FALSE。示例:复制代码 代码如下:

3.preg_split — 通过贰个正则表明式分隔字符串array preg_split ( string
$pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]]
卡塔尔国通过三个正则表达式分隔给定字符串.
pattern:用于寻觅的格局,字符串形式。subject:输入字符串
limit:假诺钦点,将节制分隔得到的子串最多独有limit个,重临的末段一个子串将包涵全部盈余部分。limit值为-1, 0或null时都表示”不限定”,
作为php的正经,你能够利用null跳过对flags的设置。flags:flags
能够是此外下边标识的结合:PREG_SPLIT_NO_EMPTY:若是那么些符号棉被服装置,
preg_split(State of Qatar 将进重回分隔后的非空部分。
PREG_SPLIT_DELIM_CAPTURE:就算那些标识设置了,用于分隔的格局中的括号表明式将被擒获并再次来到。
PREG_SPLIT_OFFSET_CAPTURE:假如那个符号被安装,
对于每三个冒出的合作重临时将会附加字符串偏移量.
注意:那将会转移重临数组中的每一个因素,
使其各个成分变为叁个由第0个要素为分隔后的子串,第2个成分为该子串在subject中的偏移量组成的数组。重返值:重回二个行使
pattern 边界分隔 subject 后拿到 的子串组成的数组。示例:复制代码 代码如下:

In my point, [1] => is the web scripting language of choice. I love
[2] => ) */$matches = array();print_r(preg_split(“/php/i”, “In
my point, PHP is the web scripting language of choice. I love
php”));echo “
“.”n”;/**将会输出:*Array ( [0] => In my point, [1] => is
the web scripting language of choice. I love php ) */$matches =
array();print_r(preg_split(“/php/i”, “In my point, PHP is the web
scripting language of choice. I love php”, 2));echo “
“.”n”;/**将会输出:*Array ( [0] => In my point, [1] => is
the web scripting language of choice. I love ) */$matches =
array();print_r(preg_split(“/php/i”, “In my point, PHP is the web
scripting language of choice. I love php”, -1,
PREG_SPLIT_NO_EMPTY));echo “
“.”n”;?> 4.preg_quote — 转义正则表明式字符 string preg_quote
( string $str [, string $delimiter = NULL ] )preg_quote(卡塔尔需求参数 str
并向里面 每一种正则表明式语法中的字符前扩张三个反斜线。
那日常用于你有局部周转时字符串 供给充作正则表明式进行匹配的时候。
正则表明式特殊字符有: . + * ? [ ^ ] $ { } = ! < > | : –
str:输入字符串delimiter:要是钦定了可选参数
delimiter,它也会被转义。那平时用于 转义PCRE函数使用的分隔符。
/是最通用的分隔符。再次回到值:重返转义后的字符串。 示例:复制代码 代码如下:

” . $word . “”, $textbody卡塔尔国;//将会输出This book is very** difficult
to find. echo htmlspecialchars;?> 5.preg_grep —
重返相称形式的数组条款
array preg_grep ( string $pattern , array
$input [, int $flags = 0 ]
卡塔尔(قطر‎重返给定数组input中与格局pattern相配的要素构成的数组.
pattern:要探索的形式, 字符串情势. input:输入数组.
flags:如果设置为PREG_GREP_INVERT, 那么些函数重返输入数组中与
给定格局pattern不宽容的元素结合的数组.重回值:重临使用input中key做索引的数组.示例:复制代码 代码如下:

123.22 [5] => 33.2 [6] => 0.22 ) $fl_array =
preg_grep?.d+$/”,
$array);print_r;//再次回到全数富含浮点数的要素//输出:Array ( [0] =>
abc [1] => dd [2] => 123 [4] => word123 ) $fl_array =
preg_grep?.d+$/”, $array,
PREG_GREP_INVERT);print_r;?>6.preg_replace —
实行三个正则表明式的追寻和替换
mixed preg_replace ( mixed $pattern ,
mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count
]] State of Qatar搜索subject中相称pattern的一些,
以replacement进行沟通。pattern:要寻觅的形式。能够是四个字符串或字符串数组。
能够应用一些PCRE修饰符,
包罗’e’,可以为那个函数内定。replacement:用于替换的字符串或字符串数组。假使这么些参数是壹个字符串,并且pattern是一个数组,那么富有的情势都采纳这些字符串举行轮番。假使pattern和replacement都以数组,种种pattern使用replacement中对应的
成分进行替换。假若replacement中的元素比pattern中的少,
多出来的pattern使用空字符串实行交替。replacement中得以分包后向引用\n或$n,语法上首荐前面一个。
各类 那样的援引将被相称到的第n个捕获子组捕获到的文本替换。
n能够是0-99,\0和$0代表完整的方式相称文本。
捕获子组的序号计数格局为:代表捕获子组的左括号从左到右,
从1发端数。如若要在replacement中应用反斜线,必须利用4个(“\\”,译注:因为那第一是php的字符串,经过转义后,是八个,再经过
正则表明式引擎后才被感觉是四个原稿反斜线卡塔尔。当在交替情势下办事还要后向引用前边紧跟着需借使其余二个数字(比方:在叁个同盟形式后接着扩充叁个原稿数字卡塔尔(قطر‎,
不可能采用\1如此的语法来陈述后向援引。举个例子, \11将会使
preg_replace(卡塔尔(قطر‎不可能分晓您期待的是一个\1后向援用紧跟一个原著1,依然二个\11后向引用前面不跟任何事物。
这种状态下施工方案是选择${1}1。那开创了多少个单独的$1后向援用,
三个独立的原作1。 当使用e修饰符时, 这一个函数会转义一些字符
然后开展后向引用替换。当这么些成功后请保管后向引用拆解深入分析完后未有单引号或
双引号引起的语法错误+strlen。确认保障切合PHP的
字符串语法,况兼符合eval语法。因为在形成替换后,引擎会将结果字符串作为php代码使用eval情势展开评估并将重回值作为最终参加替换的字符串。subject:要进行搜寻和替换的字符串或字符串数组。
假诺subject是三个数组,寻找和替换回在subject的每贰个因素上海展览中心开,
並且再次回到值也会是二个数组。limit:每种格局在每一种subject上拓宽交换的最大次数。暗中同意是
-1。count:假若钦点,将会被填充为完成的更替次数。再次来到值:假如subject是二个数组,
preg_replace(State of Qatar再次回到一个数组, 其余意况下重回二个字符串。
如若相称被查找到,替换后的subject被再次回到,别的情状下 重返未有校正的
subject。如若产生错误,重临 NULL 。 示例:使用后向援用紧跟数值原版的书文:复制代码 代码如下:

复制代码 代码如下:$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’;//会输出:The bear black slow jumped
over the lazy dog.echo preg_replace($patterns, $replacements,
$string卡塔尔国;//对形式和替换内容按key举办排序大家能够赢得期待的结果.ksort;ksort;//会输出:The
slow black bear jumped over the lazy dog.echo preg_replace($patterns,
$replacements, $string卡塔尔国;替换部分值:复制代码 代码如下:

采纳修饰符’e’:复制代码 代码如下:

hello

echo htmlspecialchars/e”, “‘\1’.strtoupper.’\3′”,
$html_body卡塔尔卡塔尔;?>分离空白字符:复制代码
代码如下:

应用参数count: 复制代码 代码如下:

7.preg_replace_callback —
施行二个正则表明式找出况且采纳二个回调进行交替
mixed
preg_replace_callback ( mixed $pattern , callable $callback , mixed
$subject [, int $limit = -1 [, int &$count ]] State of Qatar那几个函数的作为除了
能够钦点贰个 callback 代替 replacement 实行调换字符串的估测计算,其他方面同等 preg_replace(卡塔尔。
pattern:要探寻的形式,能够使字符串或三个字符串数组。
callback:八个回调函数,在历次需求替换时调用,调用时函数获得的参数是从subject中十二分到的结果。回调函数再次来到真正参加替换的字符串。你只怕时时会供给callback函数而
仅用于
preg_replace_callback(卡塔尔国二个地点的调用。在这里种情状下,你可以利用佚名函数来定义一个佚名函数作为preg_replace_callback(卡塔尔(قطر‎调用时的回调。
那样做你能够保存全部调用音信在同三个职分並且不会因为一个不在任何别的地点使用的回调函数名称而污染函数名称空间。subject:要搜索替换的对象字符串或字符串数组。
limit:对于每种形式用于每种 subject 字符串的最大可替换次数。
私下认可是-1。count:假诺钦赐,那个变量将被填充为改造实行的次数。
示例:preg_replace_callback:复制代码
代码如下:

发表评论

电子邮件地址不会被公开。 必填项已用*标注