PHP正则表达式遇到难题了,求解释```

<?php
$tags = $_POST['tags'];
if(trim($tags) != ''){
$pattern = '/^<[\/]?[a-zA-z0-9 ="\';":]*>$/';
if(preg_match($pattern,$tags) == 1){
$tags = str_replace('<','<',$tags);
$tags = str_replace('>','>',$tags);
$tags = str_replace('"','"',$tags);
echo '输入格式正确: '.$tags;
}else{
echo '输入格式错误!!';
}
}
?>

这一整串代码什么意思。。我关键是看不懂正则表达式那里。
还有<,",>是什么意思啊
那个不是v。是\ /这个

第1个回答  2011-03-14
preg正则表达式有一个模式分隔符,可以为任意字符。文中的表达式选择了/,所以在正则中遇到/就要转义成\/(也可以写成 Q^<[/]?[a-zA-Z0-9 ="\';:]*>$Q ,pcre完全能够理解)
这一串正则匹配一个以<开头,以>结尾,中间包含任意多个字母、数字、空格、等号、单双引号、分号和冒号的字符串。原文写了两个",可能是搞错了,但重复对匹配没有影响。至于<,你查看一下本页的源代码,查找“?php”,在?之前的就是了。它在html中表示<符号,>是>
第2个回答  2011-03-11
哈哈哈,是这样的,[\/]这里面不是V是/,意思是尖括号内是否以/开头的a-zA-z0-9 ="\';":字符的组合都匹配,这应该是匹配HTML标签的
^<是以<开头的行,>$是以>结尾的行,这只匹配行的开头是<结尾是>的行
比如
<div>
abc
</div>
这行正则会匹配<div>和</div>
第3个回答  2011-03-14
补充:其实就是匹配单个的html开始或结束标记。最简单的表达是
!^</?[a-zA-Z0-9 ="\';:]*>$!
\'是对php中单引号的转义。或者还有更简单的
!^</?[a-z0-9 ="\';:]*>$!i
i表示忽略大小写。模式分隔符就是为了区分表达式和像i这样的模式修饰符而设计的。本回答被提问者采纳
第4个回答  2011-03-11
'/^<[\/]?[a-zA-z0-9 ="\';":]*>$/';
正则以/开头,以/结尾。
[V]就是V
?表示0或1个
[a-zA-z0-9 ="\';":]表示值为a-z或者A-Z或者0-9或者...
*表示0个或者任意个
^则是以此开头,$以此结尾。
str_replace('<','<',$tags);这个就是替换
第5个回答  2011-03-11
正则:
^< :以尖括号开头
[V]? 尖括号后 可以有 大写的V 【注:这里的V用的很傻,不知道有什么用,因为后面有A-Z】
[a-zA-z0-9 ="\';":]* 包含 中括号里面的字符 数量不限【又是小写的a-z 又是 A-z 干嘛的?写错了? A-Z?】
>$ 以尖括号结尾
相似回答