在处理一些复杂的字符串用普通字符串处理函数无法处理干净,正则表达式就有了它的用武之地。
下面谈谈正则表达式的基本用法
<?php
int preg_match($modle,$string) //第一字符串当匹配模式,第二字符串是被匹配字符串,函数返回值是一个整型,匹配成功返回1,失败返回0;
?>
下面是对匹配模式中得用到的量词﹑元字符﹑修饰符.
看看量词列表
+ | 匹配任何至少包含一个前导字符的字符串 |
* | 匹配任何零个或者多个前导字符的字符串 |
? | 匹配任何零个或者一个前导字符的字符串 |
. | 匹配任意字符(一个点对应一个字符) |
{x,y} | 匹配任何包含X到Y个前导字符串 |
| | 匹配字符串左边或者右边 |
$ | 从结尾开始匹配 |
^ | 从开头开始匹配 |
一个匹配例子:
<?php
$modle = '/ph+p/';
$string = 'php' ;
echo preg_match($modle,$string);
?>
这样显示结果就似乎:1。看完了这个例子,其他结果量词用法也是一样的。
看看元字符列表
[a-z] | 匹配任何小写字母从a到z的字符串 |
[0-9] | 匹配任何数字从0到9的数 |
[a-zA-Z0-9] | 匹配任何大小写从a-z,数字从0-9的字符串(与[\w]效果相同) |
还有几个元字符如:[\W](跟[\w]相反),\s表示匹配空白字符,而\S这是匹配非空白字符。
元字符应用例子
<?php
$modle = '/([\w\_\.]{2,255})@([\w-]{1,}).([a-z]{2,4})/';
$string = '[email protected]';
if (preg_match($modle,$string)==1)
{ echo "邮件名正常";}
else
{ echo "邮件名蛋疼";}
?>
上面是一个对邮件格式判断的小应用,也是元字符的综合应用。
最好看看 修饰符
i | 完全不区分大小写 |
m | 在匹配的前面或后面采用多行模式 |
x | 忽略匹配字符串中得空格 |
A | 强制从头开始匹配 |
U | 禁止从贪心问题 |
下面举一个例子,针对UUB解析中得贪心问题
<?php
//我们的这次匹配的目的就是模拟UUB解析器,讲[b][/b]转换成<strong></strong>
$modle = '/\[b\](.*)\[\/b\]/';
$replace = '<strong>\1</strong>';
$string = 'this is [b]lili[/b],that is [b]李立[/b]';
echo preg_replace($modle, $replace, $string);
echo "<br />";
$modle = '/\[b\](.*)\[\/b\]/U';
$replace = '<strong>\1</strong>';
$string = 'this is [b]lili[/b],that is [b]李立[/b]';
echo preg_replace($modle, $replace, $string)
?>
我就不多讲了,结果一目了然,,正则表达的基础就到这里,如果还有什么不懂的,留言吧~~
转载于:https://www.cnblogs.com/dengwz7788/archive/2011/10/08/2202230.html