preg_replace使用小结

1、
$str="acsdcs<55555555>sc<6666>sdcd";
去除以<开头,以>结尾的那部份,输出结果是:acsdcssdcd
echo preg_replace("/<.*>/","",$str);
上面的 .* 是表示任何字符,也就是说不管<>包住的是什么都去掉其中. 表示任意字符, * 表示任意个数

2、
$str="acsdcs<55555555>sc<6666>sdcd";
echo preg_replace("/<.{4}>/","",$str); 
此时输出:acsdcs<55555555>scsdcd因为{4}指定了条件:<>内为4个字符的才满足条件,所以<55555555>不符合条件,没有被替换。
注:{数字} 表示指定前面的个数,*就表示是任意个(0--无限个)

3、
表示重复次数的除了 *, {指定次数} 表示,还有很多表达形式
$str="acsdcs<55555555>sc<6666>sd<>cd";
echo preg_replace("/<[0-9]*>/","",$str);//注意没有“.”
//输出acsdcscd
echo "<hr>";
echo preg_replace("/<[0-9]+>/","",$str);//注意没有“.”
echo preg_replace("/<.[0-9]*>/","",$str);//注意有“.”
//输入acsdcsscsd<>cd
上面的例子只要是为了 表达 * 与+的区别 ,* 表示重复0数或n 次,而+ 表示1次以上,即一例中<[0-9]+ >表示<>里面至少要有一个数字才符合条件。

4、
$str="acsdcs<55555555>sc<6666>sd<>cd";
echo preg_replace("/<[0-9]?>/","",$str);
//输出acsdcs<55555555>sc<6666>sdcd
这里的?表示要是0次或1 次,超过1次不符合条件。


更复杂的例子来啦:
$s=preg_replace("/(.*?[月票|求|更].*?)/i","",$s);
preg_match_all('/href="([0-9]+).shtm">(.+?)</a>/i',$s,$arr_dstorycate);    
print_r($arr_dstorycate);

preg_match_all("/<img.*?src=[\'| \"](.*?(?:[.gif|.jpg]))[\'|\"].*?[/]?>/i",$content,$arr_dstorycate);            
print_r($arr_dstorycate);


更多preg_replace例子:
$string  =  'April 15, 2003' ;
$pattern  =  '/(\w+) (\d+), (\d+)/i' ;
$replacement  =  '${1}1,$3' ;//${1}1,因为后面跟了实体1,所以前面必须大括号括起来
echo  preg_replace ( $pattern ,  $replacement ,  $string );//April1,2003


-------*******注意,这是替换,如果是匹配,则用

preg_match():(https://blog.csdn.net/liujihaozhy/article/details/50433262)

$pattern = '/(\d+)\-(\d+)区(.*)/';
$dirvalue = '21-78区TapTeam阳光';
preg_match($pattern,$dirvalue, $arr);
//得到的匹配值:
$arr = Array
(
    [0] => 21-78区TapTeam阳光
    [1] => 21
    [2] => 78
    [3] => TapTeam阳光
)



























































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值