然后第二个参数中

正则表明式用于字符串管理、表单验证等场面,实用高效。本文搜罗了有个别常用的表明式:

$str = preg_replace("/(<a.*?>)(.*?)(</a>)/", '123', $str);

里头用了八个子格局(每一个圆括号中内容为二个子方式),第多少个是链接伊始标签,第一个是链接文本,第八个是</a>

下一场第1个参数中1、2、3就代表那四个部分,要替换来什么体统还不轻巧?

赢得页面中的全体链接地址的PHP函数

上边这几个用PHP写的函数,能够博得大肆的字符串$string中的全体链接地址($string能够是从八个HTML页面文件直接读抽取来的字符串卡塔尔(قطر‎,结果保存在二个数组中再次来到.该函数自动把电子邮件地址打消在外,而且回去的数组中不会有重复成分.

function GetAllLink($string) 
{ 
$string = str_replace("r","",$string); 
$string = str_replace("n","",$string); 

$regex[url] = "((http|https|ftp|telnet|news)://)?([a-z0-9_-/.]+.[][a-z0-9:;&#@=_~%?/.,+-]+)"; 
$regex[email] = "([a-z0-9_-]+)@([a-z0-9_-]+.[a-z0-9-._-]+)"; 

//去掉标签之间的文字 
$string = eregi_replace(">[^<>]+<","><", $string); 

//去掉JAVASCRIPT代码 
$string = eregi_replace("<!--.*//-->","", $string); 

//去掉非<a>的HTML标签 
$string = eregi_replace("<[^a][^<>]*>","", $string); 

//去掉EMAIL链接 
$string = eregi_replace("<a([ ]+)href=(["']*)mailto:($regex[email])(["']*)[^>]*>","", $string); 

//替换需要的网页链接 
$string = eregi_replace("<a([ ]+)href=(["']*)($regex[url])(["']*)[^>]*>","\3t", $string); 

$output[0] = strtok($string, "t"); 
while(($temp = strtok("t"))) 
{ 
if($temp && !in_array($temp, $output)) 
$output[++$i] = $temp; 
} 

return $output; 
}

以下是以PHP的语法所写的示范

验证字符串是或不是只含数字与丹麦语,字符串长度并在4~13个字符之间

<?php 
$str = 'a1234'; 
if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) { 
echo "验证成功";} else { 
echo "验证失敗";}?>

归纳的吉林品质证字号验证

<?php 
$str = 'a1234'; 
if (preg_match("^(?:d{15}|d{18})$", $str)) { 
echo "验证成功"; 
} else { 
echo "验证失敗";} 
?>

下边包车型大巴代码达成文字中的代码块,功效就像你在剧本之家见到的代码同样。

function codedisp($code) { 
global $discuzcodes; 
$discuzcodes['pcodecount']++; 
$code = htmlspecialchars(str_replace('\"', '"', preg_replace("/^[nr]*(.+?)[nr]*$/is", "\1", $code))); 
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<br><div class="msgheader"><div class="right"><a href="###" class="smalltxt" onclick="copycode($('phpcode$discuzcodes[codecount]'));">[复制此代码]</a></div>代码如下:</div><div class="msgborder" id="phpcode$discuzcodes[codecount]">".fhtml2($code)."</div><br>"; 
$discuzcodes['codecount']++; 
return "[tDISCUZ_CODE_$discuzcodes[pcodecount]t]"; 
} 
$message = preg_replace("/s*[code](.+?)[/code]s*/ies", "codedisp('\1')", $message); 
$message = preg_replace("/s*[html](.+?)[/html]s*/ies", "htmldisp('\1')", $message);

协作华语字符的正则表明式: [u4e00-u9fa5]
评注:相配中文还真是个脑仁疼的事,有了那么些表明式就好办了

相当双字节字符(包涵汉字在内卡塔尔:[^x00-xff]
评注:能够用来测算字符串的长度(叁个双字节字符长度计2,ASCII字符计1)

相称空白行的正则表明式:ns*r
评注:能够用来删除空白行

相称HTML标识的正则表明式:<(S*?)[^>]*>.*?</1>|<.*?
/>
评注:网上流传的版本太不佳,上面这些也只有能合作部分,对于复杂的嵌套标记照旧不能够

相配首尾空白字符的正则表达式:^s*|s*$
评注:能够用来删除行首行尾的空白字符(包罗空格、制表符、换页符等等卡塔尔,特别有效的表达式

相配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用

极度网站ULacrosseL的正则表明式:[a-zA-z]+://[^s]*
评注:网络流传的本子效果相当轻便,上边这几个宗旨能够满意要求

合营帐号是或不是合法(字母最初,允许5-16字节,允许字母数字下划线State of Qatar:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

相配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:相配方式如 0511-4405222 或 021-87888822

相配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

合营中夏族民共和国邮编:[1-9]d{5}(?!d)
评注:中夏族民共和国邮编为6位数字

相配身份ID:d{15}|d{18}
评注:中华人民共和国的居民身份证为十三个人或贰十人

匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用

合营特定数字:

^[1-9]d*$    //匹配正整数
 ^-[1-9]d*$   //匹配负整数
 ^-?[1-9]d*$   //匹配整数
 ^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
 ^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
 ^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
 ^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
 ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)

评注:管理多量数量时有用,具体运用时留意修正

相称特定字符串:

^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
 ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
 ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
 ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
 ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

上边是一些特殊字符:

正则表达式中的特殊字符: (学习参照他事他说加以考察书-<<驾驭正则表达式>>)

字符
意思:对于字符,日常表示按字面意义,建议接着的字符为特殊字符,不作解释。
比方说:/b/相配字符’b’,通过在b
前面加叁个反斜杠,也正是/b/,则该字符产生特殊字符,表示
同盟一个单词的分割线。
或者:
对此多少个字符,常常表明是特殊的,提议紧接着的字符不是优秀的,而应该按字面解释。
例如:*是一个特殊字符,匹配任性个字符(饱含0个字符卡塔尔;举个例子:/a*/意味相称0个或七个a。
为了合作字面上的*,在a前边加三个反斜杠;比方:/a*/匹配’a*’。

字符^
意思:表示拾壹分的字符必须在最前面。
譬如说:/^A/不相配”an A,”中的’A’,但非凡”An A.”中最前头的’A’。

字符$
意思:与^相同,相配最末的字符。
例如:/t$/不匹配”eater”中的’t’,但匹配”eat”中的’t’。

字符*
意义:匹配*日前的字符0次或n次。
例如:/bo*/匹配”A ghost booooed”中的’boooo’或”A bird
warbled”中的’b’,但不宽容”A goat g
runted”中的任何字符。

字符+
意义:相称+号前边的字符1次或n次。等价于{1,}。
比如说:/a+/相配”candy”中的’a’和”caaaaaaandy.”中的全数’a’。

字符?
意思:相配?前边的字符0次或1次。
例如:/e?le?/匹配”angel”中的’el’和”angle.”中的’le’。

字符.
意思:(小数点卡塔尔匹配除换行符外的具备单个的字符。
诸如:/.n/相称”nay, an apple is on the
tree”中的’an’和’on’,但不相配’nay’。

字符(x)
意思:相称’x’并记下相配的值。
举个例子说:/(foo卡塔尔国/相称和笔录”foo
bar.”中的’foo’。相称子串能被结果数组中的素[1], …, [n] 返
回,或被RegExp对象的脾气$1, …, $9重回。

字符x|y
意义:匹配’x’或者’y’。
例如:/green|red/匹配”green apple”中的’green’和”red apple.”中的’red’。

字符{n}
意思:这里的n是三个正整数。相称前面包车型客车n个字符。
诸如:/a{2}/不相配”candy,”中的’a’,但极度”caandy,”
中的全部’a’和”caaandy.”中前边的五个
‘a’。

字符{n,}
意义:这里的n是二个正整数。相称最少n个前面包车型地铁字符。
举例:/a{2,}不相配”candy”中的’a’,但格外”caandy”中的全数’a’和”caaaaaaandy.”中的全体’a’

字符{n,m}
意思:这里的n和m都以正整数。相称起码n个最多m个前边的字符。
比方说:/a{1,3}/不合作”cndy”中的任何字符,但匹配”candy,”中的’a’,”caandy,” 中的前面七个
‘a’和”caaaaaaandy”中前面包车型大巴多少个’a’,注意:固然”caaaaaaandy”
中有为数不菲个’a’,但只格外前边的三
个’a’即”aaa”。

字符[xyz]
意思:一字符列表,相称列出中的任一字符。你可以透过连字符-建议四个字符范围。
例如:[abcd]跟[a-c]同一。它们相称”brisket”中的’b’和”ache”中的’c’。

字符[^xyz]
意思:一字符补集,也等于说,它相称除了列出的字符外的具有东西。
你能够接受连字符-提议一
字符范围。
例如:[^abc]和[^a-c]卓殊,它们最先相配”brisket”中的’r’和”chop.”中的’h’。

字符
意思:相配叁个空格(不要与b混淆卡塔尔国

字符b
意义:相称多个单词的汾水陵,比方三个空格(不要与混淆卡塔尔(قطر‎
例如:/bnw/匹配”noonday”中的’no’,/wyb/匹配”possibly
yesterday.”中的’ly’。

字符B
意思:相称四个单词的非分水岭
例如:/wBn/匹配”noonday”中的’on’,/yBw/匹配”possibly
yesterday.”中的’ye’。

字符cX
意义:这里的X是二个调节字符。相配多个字符串的调控字符。
诸如:/cM/相配一个字符串中的control-M。

字符d
意义:匹配二个数字,等价于[0-9]。
例如:/d/或/[0-9]/匹配”B2 is the suite number.”中的’2’。

字符D
意义:匹配任何的非数字,等价于[^0-9]。
例如:/D/或/[^0-9]/匹配”B2 is the suite number.”中的’B’。

字符f
意思:相称一个表单符

字符n
意思:相配三个换行符

字符r
意思:相配三个回车符

字符s
意思:相称三个单个white空格符,包罗空格,tab,form
feed,换行符,等价于[ fnrtv]。
例如:/sw*/匹配”foo bar.”中的’ bar’。

字符S
意思:相配除white空格符以外的二个单个的字符,等价于[^ fnrtv]。
例如:/S/w*匹配”foo bar.”中的’foo’。

字符t
意义:相称贰个制表符

字符v
意义:相配三个顶头制表符

字符w
意义:相配全部的数字和字母以至下划线,等价于[A-Za-z0-9_]。
例如:/w/匹配”apple,”中的’a’,”$5.28,”中的’5’和”3D.”中的’3’。

字符W
意义:相称除数字、字母外及下划线外的其他字符,等价于[^A-Za-z0-9_]。
例如:/W/或者/[^$A-Za-z0-9_]/匹配”50%.”中的’%’。

字符n
意思:这里的n是三个正整数。相配三个正则表明式的最后一个子串的n的值(计数左圆括号State of Qatar。

例如:/apple(,)sorange1/匹配”apple, orange, cherry, peach.”中的’apple,
orange’,下面
有多个尤其完整的例子。
小心:假若左圆括号中的数字比n钦定的数字还小,则n取下一行的八进制escape作为描述。

字符ooctal和xhex
意义:这里的ooctal是二个八进制的escape值,而xhex是一个十七进制的escape值,允许在三个正则表达式中存放ASCII码。

通用方式

定界符,日常使用 “/”做为定界符开首和终止,也足以使用”#”。

怎么着时候使用”#”呢?常常是在您的字符串中有大多”/”字符的时候,因为正则的时候这种字符必要转义,比方uri。
应用”/”定界符的代码如下.

<?php 
$regex = '/^http://([w.]+)/([w]+)/([w]+).html$/i'; 
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html'; 
$matches = array(); 
if(preg_match($regex, $str, $matches)){ 
var_dump($matches); 
} 
echo "n";

preg_match中的$matches[0]将包括与整个格局相配的字符串。

使用”#”定界符的代码如下.这时对”/”就不转义!

$regex = '#^http://([w.]+)/([w]+)/([w]+).html$#i'; 
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html'; 
$matches = array(); 
if(preg_match($regex, $str, $matches)){ 
var_dump($matches); 
} 
echo "n";

修饰符:用于转移正则表明式的行事。

大家看来的(‘/^

贡献代码:

$regex = '/HELLO/'; 
$str = 'hello word'; 
$matches = array(); 
if(preg_match($regex, $str, $matches)){ 
echo 'No i:Valid Successful!',"n"; 
} 
if(preg_match($regex.'i', $str, $matches)){ 
echo 'YES i:Valid Successful!',"n"; 
}

字符域:[w]用方括号扩起来的部分正是字符域。

限定符:如[w]{3,5}或者[w]*或者[w]+这些[w]末端的标记都意味着节制符。现介绍具体意思。
{3,5}表示3到5个字符。{3,}超越3个字符,{,5}最多5个,{3}多少个字符。
* 表示0到多个

  • 表示1到多个。
    脱字符号
    ^:
    > 放在字符域(如:[^w]卡塔尔合意味否定(不包罗的意思卡塔尔国——“反向选用”
    > 放在表达式之前,表示以当下以此字符以前。(/^n/i,表示以n起始卡塔尔国。
    只顾,我们平常管””叫”跳脱字符”。用于转义一些特殊符号,如”.”,”/”
    界符:正则表明式的款式通常如下:
    /love/
    里面坐落于“/”定界符之间的一些正是快要在对象对象中开展相配的方式。
    元字符:便是指那么些在正则表明式中装有非凡含义的专用字符,能够用来分明其辅导字符(即坐落于元字符前边的字符)在对象对象中的现身形式。
    比较常用的元字符包含: “+”, “*”,以及 “?”。
    “+”元字符规定其教导字符必需在对象对象中三回九转出现二回或频仍
    “*”元字符规定其指导字符必需在对象对象中冒出零次或一连多次,
    “?”元字符规定其带领字符必得在对象对象中接二连三现身零次或一次。
    上面,就让大家来看一下正则表达式元字符的切切实实使用。
    /fo+/
    因为上述正则表明式中包涵“+”元字符(它后边的“o”是指点字符),表示能够与目的对象中的“fool”,
    “fo”等在字母f前边延续现身叁个或两个字母o的字符串相匹配。
    除开元字符之外,客商还足以标准内定格局在合营对象中现身的频率。举例,
    /jim{2,6}/
    上述正则表明式规定字符m能够在配合对象中三回九转现身2-6次,因而,上述正则表达式可以同jimmy或jimmmmmy等字符串相相称。
    其余多少个关键的元字符的应用方式。
    s:用于相称单个空格符,包含tab键和换行符;
    S:用于相称除单个空格符之外的兼具字符;
    d:用于相称从0到9的数字;
    w:用于相配字母,数字或下划线字符;
    W:用于相称全数与w不宽容的字符;
    . :用于相配除换行符之外的有着字符。
    (表达:我们能够把s和S甚至w和W看作互为逆运算)
    下边,大家就通超过实际例看一下怎么在正则表达式中应用上述元字符。
    /s+/
    上述正则表明式可以用于相配目的对象中的二个或八个空格字符。
    除开大家上述所介绍的元字符之外,正则表明式中还具有此外一种较为特殊的专项使用字符,即定位符。
    一定符:用于规定相称情势在目的对象中的现身岗位。
    较为常用的定点符满含: “^”, “$”, “b” 以至 “B”。
    “^”定位符规定匹配情势必需出今后对象字符串的发端
    “$”定位符规定匹配情势必得出今后指标对象的结尾
    b定位符规定相称格局必得出今后目的字符串的始发或最终的五个境界之一
    “B”定位符则规定匹配成对象必需放在指标字符串的初始和最后八个边界之内,即配成对象既无法充当指标字符串的启幕,也不能作为靶子字符串的最终。相通,大家
    也得以把“^”和“$”以至“b”和“B”看作是互为逆运算的两组定位符。举例来讲:
    /^hell/
    因为上述正则表达式中包罗“^”定位符,所以能够与对象对象中以 “hell”,
    “hello”或 “hellhound”开首的字符串相相称。
    /ar$/
    因为上述正则表明式中富含“$”定位符,所以能够与对象对象中以 “car”, “bar”或
    “ar” 结尾的字符串相相称。
    /bbom/
    因为上述正则表达式形式以“b”定位符在此以前,所以能够与指标对象中以 “bomb”, 或
    “bom”起头的字符串相相配。
    /manb/
    因为上述正则表明式形式以“b”定位符结尾,所以可以与指标对象中以 “human”,
    “woman”或 “man”结尾的字符串相匹配。
    为了能够有助于客户更加灵敏的设定相称情势,正则表达式允许使用者在合作形式中钦赐某三个限量而不囿于于现实的字符。举个例子:
    /[A-Z]/
    上述正则表明式将会与从A到Z范围内任何一个大写字母相相配。
    /[a-z]/
    上述正则表明式将会与从a到z范围内任何二个小写字母相相称。
    /[0-9]/
    上述正则表明式将会与从0到9限定内任何一个数字相相配。
    /([a-z][A-Z][0-9])+/
    上述正则表明式将会与其余由字母和数字组合的字符串,如 “aB0”
    等相相称。这里须求提示客商注意的一点便是能够在正则表明式中使用 “(State of Qatar”
    把字符串组合在一块儿。
    “(卡塔尔(قطر‎”符号:包涵的源委必得相同的时间出今后对象对象中。因而,上述正则表明式将无法与诸如
    “abc”等的字符串相称,因为“abc”中的最后三个字符为字母而非数字。
    设若我们愿指标在王宛平则说明式中贯彻相像编制程序逻辑中的“或”运算,在四个例外的格局中任选一个举行相配的话,能够动用管道符:
    “|”。比如:
    /to|too|2/
    上述正则表明式将会与目的对象中的 “to”, “too”, 或 “2” 相相称。
    否定符:“[^]”。与大家前文所介绍的定势符 “^” 不一样,否定符
    “[^]”规定目的对象中无法存在格局中所规定的字符串。比如:
    /[^A-C]/
    上述字符串将会与指标对象中除A,B,和C之外的其余字符相相称。日常的话,当“^”出今后“[]”内时就被视做否定运算符;而当“^”坐落于“[]”之外,或没有“[]”时,则应当被视做定位符。
    末段,当客商要求在正则表明式的方式中投入元字符,并招来其非常对象时,能够运用
    转义符:“”。例如:
    /Th*/
    上述正则表达式将会与对象对象中的“Th*”而非“The”等相相配。
    实际涉世介绍
    依然得说说 ^ 和 $
    他们是各自用来相配字符串的开首和得了,以下分别比方表达:
    “^The”:开始必必要有”The”字符串;
    “of despair$”:结尾必要求有”of despair” 的字符串;
    那么,
    “^abc$”:正是必要以abc伊始和以abc结尾的字符串,实际上是只有abc相称;
    “notice”:相称蕴涵notice的字符串;
    你能够望见假使您从未用大家提到的八个字符(最终三个事例),正是说方式(正则表明式)能够出今后被稽查字符串的此外地点,你从未把她锁定到两侧。
    接着,说说 ‘*’ ‘+’ 和 ‘?’
    她俩用来表示三个字符能够现身的次数恐怕顺序,他们各自代表:
    “zero or more”相当于{0,}
    “one or more”相当于{1,}
    “zero or one.”相当于{0,1}
    此处是局地事例:
    “ab*”:和ab{0,}同义,相配以a伊始,前面能够接0个或然N个b组成的字符串(”a”,
    “ab”, “abbb”, 等卡塔尔;
    “ab+”:和ab{1,}同义,同上条相近,但起码要有叁个b存在 (”ab” “abbb”等State of Qatar;
    “ab?”:和ab{0,1}同义,能够未有只怕独有八个b;
    “a?b+$”:相称以二个如故0个a再增加叁个上述的b结尾的字符串。
    要点:’*’ ‘+’ 和 ‘?’ 只管它前边那些字符。
    您也足以在大括号里面约束字符现身的个数,举例:
    “ab{2}”: 需求a前边必然要跟八个b(三个也不可能少)(”abb”State of Qatar;
    “ab{2,}”: 供给a前面料定要有多少个可能七个以上b(如”abb” “abbbb” 等);
    “ab{3,5}”: 必要a前边能够有2-5个b(”abbb”, “abbbb”, or “abbbbb”卡塔尔国。
    明日大家把自然多少个字符放到小括号里,譬如:
    “a(bc)*”: 相配 a 后边跟0个也许三个”bc”;
    “a(bc){1,5}”: 一个到5个 “bc”;
    还应该有一个字符 ‘|’,也就是O福睿斯操作:
    “hi|hello”: 相配含有”hi” 恐怕 “hello” 的 字符串;
    “(b|cd卡塔尔国ef”: 相称含有 “bef” 大概 “cdef”的字符串;
    “(a|b)*c”: 相配含有这么多少个(包罗0个)a或b,前边跟一个c的字符串;
    一个点(‘.’卡塔尔(قطر‎能够表示享有的单一字符,不富含” ”
    假若,要合营满含” ”在内的保有单个字符,如何做?
    用'[ .]’这种方式。
    “a.[0-9]”: 三个a加二个字符再加三个0到9的数字;
    “^.{3}$”: 八个任性字符结尾。
    中括号括住的始末只很多个单纯的字符
    “[ab]”: 相称单个的 a 或许 b ( 和 “a│b” 同样卡塔尔(قطر‎;
    “[a-d]”: 相配’a’ 到’d’的单个字符 (和”a│b│c│d” 还应该有“[abcd]”效果相似卡塔尔(قطر‎;
    诚如大家都用[a-zA-Z]来钦定字符为三个尺寸写俄文:
    “^[a-zA-Z]”: 相配以大小写字母早先的字符串;
    “[0-9]%”: 相称含有 形如 x% 的字符串;
    “,[a-zA-Z0-9]$”: 相称以逗号再加三个数字或字母结尾的字符串;
    您也得以把你不想要得字符列在中括号里,你只要求在包罗号内部使用’^’
    作为开端 “%[^a-zA-Z]%” 匹配含有五个百分号里面有一个非字母的字符串。
    要点:^用在中括号开首的时候,就代表免除括号里的字符。
    为了PHP可以表达,你必需在这里些字符前边后加”,并且将一些字符转义。
    毫无遗忘在中括号里面包车型大巴字符是那条规路的不等—在中括号里面,全体的特殊字符,包含(”卡塔尔(قطر‎,都将遗失他们的新鲜性质
    “[*+?{}.]”相配含有这么些字符的字符串:
    再有,正如regx的手册告诉大家:”假若列表里含有’]’,最棒把它当作列表里的第二个字符(也许跟在’^’前边State of Qatar。借使带有’-‘,最佳把它放在最终面恐怕最终边
    , or 大概八个节制的第三个甘休点[a-d-0-9]中间的‘-‘将有效。
    看了地方的例证,你对{n,m}应该明了了吧。要小心的是,n和m都无法为负整数,何况n总是小于m。这样,能力起码相称n次且最多相称m次。如”p{1,5}”将相配
    “pvpppppp”中的前四个p
    上面说说以最先的
    b
    书上说她是用来同盟叁个单词边界,正是…比如’veb’,能够相称love里的ve而不相称very里有ve
    B 恰恰和上面的b相反。
    正则表明式的其余用法
    领取字符串
    ereg(State of Qatar and eregi(卡塔尔(قطر‎有一个特征是允许顾客通过正则表达式去提取字符串的一有个别(具体用法你能够阅读手册卡塔尔国。举例说,我们想从
    path/URAV4L 提取文件名,上面包车型地铁代
    码正是你须求:
    ereg(”([^/]*)$”, $pathOrUrl, $regs);
    echo $regs[1];
    高端的转变
    ereg_replace() 和
    eregi_replace(卡塔尔(قطر‎也是异常实用的,若是大家想把装有的距离负号都替换到逗号:
    ereg_replace(”[ t]+”, “,”, trim($str));
    以下为援用的内容:

    preg_match()和preg_match_all()
    preg_quote()
    preg_split()
    preg_grep()
    preg_replace()

函数的现实性运用,大家能够通过PHP手册来找到,上边分享部分平常积攒的正则表明式:
匹配action属性

以下为援引的故事情节:

$str = ''; 
$match = ''; 
preg_match_all('/s+action="(?!http:)(.*?)"s/', $str, $match); 
print_r($match);

在正则中动用回调函数

以下为援引的原委:

/** 
* replace some string by callback function 
* 
*/ 
function callback_replace() { 
$url = 'http://esfang.house.sina.com.cn'; 
$str = ''; 
$str = preg_replace ( '/(?<=saction=")(?!http:)(.*?)(?="s)/e', 'search($url, 1)', $str ); 
echo $str; 
} 
function search($url, $match){ 
return $url . '/' . $match; 
}

带断言的正则相配

$match = ''; 
$str = 'xxxxxx.com.cn bold font 
paragraph text 
'; 
preg_match_all ( '/(?<=<(w{1})>).*(?=</1>)/', $str, $match ); 
echo "匹配没有属性的HTML标签中的内容:"; 
print_r ( $match );

更迭HTML源码中的地址

以下为援引的原委:

$form_html = preg_replace ( '/(?<=saction="|ssrc="|shref=")(?!http:|javascript)(.*?)(?="s)/e', 'add_url($url, '1')', $form_html );

元字符

在地点的例证中,^ 、d 及 $
等那么些标识,代表了一定的配钟爱义,我们誉为元字符,常用的元字符如下:
元字符 说明
. 相称除换行符意外的轻松字符
w 相称字母或数字或下划线
s 相配任意的空白符
d 相配数字
b 相称单词的伊始或停止
^ 匹配字符串的最初
$ 相称字符串的达成
[x] 匹配x字符,如相称字符串中的 a、b 和 c 字符
W w的反义,即相称大肆非字母,数字,下划线和汉字的字符
S s的反义,即相称任性非空白符的字符
D d的反义,即相配大肆非数字的字符
B b的反义,即不是单词开端或结束的地点
[^x] 相配除了 x 意外的率性字符,如 [^abc] 相配除了 abc
那多少个字母之外的轻便字符

相关文章

发表评论

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

网站地图xml地图