php的正则表达式

widuu 2012-9-14 PHP技术 3,952 0 喜欢 (0)

我的正则表达式一直都不清楚,都是从网上搜索,网上查然后用的,但是当我在写自己的框架的时候我发现正则这个利器不会真的不行,所以我就苦逼的回去修炼去了,这里要谢谢兄弟连高老师的视频了,给我许多基础的东西和正则的思路,现在就给大家简单分析一下正则,学习一下正则,正则我们真的要知道几个东西怎么用。

譬如/w /W /d /D /s /S其实这些不会也没关系因为我们可以自己写,譬如/w可以写成[a-zA-Z0-9]这样也是可以的,/W直接取反不就可以了吗?[^a-zA-Z0-9],当然我的意思大家还是要记住一下,因为有了那些写起来比较简单,而且书写起来看起来比较规范的。

废话不多说了,分析一下学习方法,呵呵,我也学了好长时间了,嗯我也回忆一下,错的地方大家提醒一下哈!

\d 表示任意个数字
\D 字数字之外的数字
\s 匹配任意一个空白字符
\S 表示任意一个非空白
\w 表示任意一个数字a-zA-Z0-9_
\W表示任意一个非字
[]可以匹配方括号中的任意一个原子
*表示出现0次 1次 或者多次
+表示前边的原子可以出现1次或者多次
?表示前面的原子可以出现0次或者1次
{}表示用于自己定义前边原子出现的次数
{m,n}表示前边出现的原子最少m次 最多n次
{m,}表示前边的原子最少出现m次
. 表示默认情况下,表示除换行符外的任意一个字符
^直接在一个正则表达式的第一个字符出现则表示 必须以这个正则表达式开始
$ 是代表表达式的最后一个字符结尾
| 表示或者的关系
()太多了,写出来累死人

说完大家就应该实例了,因为实例是检测和学习的真理,不会那就一个一个来,跟我当初一样,我看了这些之后我就这样学的大家不防也仿照一下

我是这样学习

我用preg_match一个一个检验学习成果 然后自己写点通用的 然后看能不能匹配成功

 
[php]
//譬如我开始做的是图片<img src=""/>我当初就是写完了,匹配不出来一点一点匹配看看哪里错了
$a='/<\img\s*src=\".*\"\s*\/\>/';
$b='<img src="2.png" alt="" />';
if(preg_match($a,$b)){
echo "图片匹配成功";
}else{
echo "匹配失败";
}
[/php]
//这就一个简单的图片匹配其实这个写的不咋的,因为中间图片部分2.png没有匹配,用的任何字符匹配的,哈哈要是要图片性质的完整留言哦,来电流量

昨天人问我正则有用吗?php程序员这个不太重要吧,我告诉你错了,正则的作用很大,要不我当初也不会重新学习去了,写个实例把,譬如我有个网站,有好多人去我的网站,会发链接,影响优化,我怎么办?
[php]
<?php
private $url;
private $siteurl;
function __constract($url='',$siteurl='www.widuu.com'){
$this->url=$url;
$this->url=$siteurl;
}
}
function setUrl() {
$str="/(https?|ftps?):\/\/((www|mail|news)\.([^\.\/]+)\.(com|org|net))/i";
preg_match_all($str, $this-&gt;url, $arr,PREG_PATTERN_ORDER );
foreach($arr[0] as $url){
$trueurl=str_replace($url, $this->;siteurl, $this->;url);
}

return $trueurl;
}
}
//这样如过别人在你的网站上发链接,你就自动替换成你自己的网址,当然正则中还有域名的后戳名少,大家自己加下
[/php]
欢迎大家转载,转载请注明来自微度网络http://www.widuu.com

转载请注明来自微度网络,本文标题:《php的正则表达式》

喜欢 0 发布评论
Top