本文目录一览:
- 1、PHP中preg_match()和preg_replace()的一些问题
- 2、PHP中正则函数preg_match匹配出现错误,应该是什么问题?
- 3、PHP正则匹配问题preg_match("/([a-zA-Z]+)/","tech/web",$dirinfo);
- 4、php 正则删除前后固定字符,中间含有某字符
- 5、PHP 问题,下面这段里面把eregi 语句改成preg_match语句 php5.3不支持eregi(),用preg_match()替代。
PHP中preg_match()和preg_replace()的一些问题
(一)当中的!是正则表达式(简称正则式)的分割界定符号。意味着开始的!和第二个!之间是正则式的【主式】(为了便于你理解,不得不这么做个伪定义),我们大多数时候都喜欢用“/”作为分割界定符号,因为在(一)中,刚好已经有“/”在【主式】中了。第二个!后面的isU等,是正则式的修正符,至于各个修正符的用法和作用,强烈建议你去查看PHP手册。
(二)这个[1]中的1,代表着匹配到结果赋值给$outputs后,$outputs数组的下标为1的值,就是前面【主式】中"(*)"匹配到的内容。
(三)第三个,是正则式中“”转义符号的用法体现。在正则式中“.”是匹配所有字符的(暂不考虑修正符模式),“.”却可以匹配“.”了。在这个正则式中,/wap.php将会匹配到“/wap.php”,并用“index.php”去替换掉它。
PHP中正则函数preg_match匹配出现错误,应该是什么问题?
这个是你的表达式语法问题,preg_match中的表达式应该带有斜杠,你这个应该修改为'/^[a-z0-9_-.]+@[a-z0-9-]+.[a-z0-9-.]+$/i'
PHP正则匹配问题preg_match("/([a-zA-Z]+)/","tech/web",$dirinfo);
使用括号会对匹配结果进行分组。在匹配结果中,键为0的表示整个正则匹配的内容,之后的是对应的括号中匹配的东西。
另外,你这里使用的是preg_match,所以只会匹配一个结果,如果想匹配所有的话,就使用preg_match_all
为了应正上面的描述,你可以运行以下代码试试:
$dirinfo = array();
preg_match_all("/([a-zA-Z]+)d+/","tech01/web",$dirinfo);
print_r($dirinfo);
php 正则删除前后固定字符,中间含有某字符
style(?=.*.b).*/style
解释如下:
(?=.*.b) 匹配含有.b的字符,?=是一个非获取匹配,不会占用字符。
这样的话,就可以匹配到你想要的,不会伤及无辜。
PHP 问题,下面这段里面把eregi 语句改成preg_match语句 php5.3不支持eregi(),用preg_match()替代。
eregi 与 preg_match 的语法相差不大,试修改如下(由于条件限制,未经测试):
if (($envType == 1 preg_math('^(' . $expr . ')(;q=[0-9]\.[0-9])?$/i', $str))
|| ($envType == 2 preg_math('((|[|;[[:space:]])(' . $expr . ')(;|]|))/i', $str))) {
if (PMA_langSet($lang)) {
return true;
}
}
eregi 使用 preg_match 配合 i 修正符替代。