栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP正则处理遇到的几个问题

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP正则处理遇到的几个问题

首先给出几个问题。

  1. 将html代码中的js内容过滤掉。

  2. 将html代码中table标签中间的内容(

    内容
    )前后加上特殊字符#。

  3. 取出img标签alt属性的值。

html代码如下:


       test
       
       

       ....
       

       

第一个问题,很容易写出下面代码:

$html = preg_replace('~~U', '', $html);

但执行的时候发现并没有过滤掉js代码。

原因是点号(.)元字符匹配除换行符以外的任意字符。js代码是多行的,所以用点号无法匹配,这个坑很浅,我却掉进去了。

解决方法:使用模式修饰符s,此修饰符可以让点号匹配换行符。

$html = preg_replace('~~Us', '', $html);

执行结果:


第二问题,可以使用php的preg_replace_callback函数。

$html = preg_replace_callback(    '~(.+)
~Us',    function ($matches) {        return '#' . $matches[1] . '#';     },    $html);

第三个问题:

preg_match_all('~

执行结果:

发现第一个匹配出错。由于alt属性值可能由双引号或单引号包括的,所以在正则中使用[’”],但如果alt属性值中有单引号或双引号就会匹配不全,此时可以使用反向引用来解决,好吧,我竟然忘了反向引用。

preg_match_all('~

             


作者:zhou
链接:https://www.jianshu.com/p/79cba48bc3ef

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/229029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号