您好,欢迎来到惠州网站建设_网页设计制作公司_高端网站建设_模板建站_欣欣仿站



模板搜索:搜索
热门搜索: ALL房产金融汽车室内设计

惠州网站设计,php正则的css替换换 2022-02-22 23:55:04

当前位置: >首页>新闻列表>惠州网站设计,php正则的css替换换

        我们看下我们的需求,我们需要匹配css路径,包含http的,https的,//的,也包含./,包含/,这种挺复杂的路径,我们如果是按照if来判断的话,就需要做好多种匹配,然后在识别替换。这种方式就比较麻烦。惠州网站设计今天就用php和正则来讲解下怎么实现这个代码。

        首先,我们来看看代码

array(6) {

    [0]=>

    string(21) "url(http://images/ydhlw.jpg"

    [1]=>

    string(25) "url(..//images/dixian.jpg"

    [2]=>

    string(29) "url(https://Img/images_p/cust1/1.jpg"

    [3]=>

    string(29) "url(/Img/images_p/cust1/2.jpg"

    [4]=>

    string(29) "url(//Img/images_p/cust1/3.jpg"

    [5]=>

    string(29) "url(./Img/images_p/cust1/4.jpg"

}

这里是我们收录的几个代码片段。这里是通过preg_match_all提取出来的,我们就加上了刚才说的几个情况。

现在我们要提取他们里面的()的内容。但是,我们只要 /Img/images_p/cust1/4.jpg 的内容,不要双引号,不要http也不要https,不要//,不要./,不要/等等。如果是通过if来做的话,就要一个个情况去判断,这样的话,代码就有点多了。今天惠州网站设计就用preg_replace来做替换。

那么替换之前,我们要获得到我们想要的内容,而且提取到内容之后,还要使用提取到的内容。

        首先,我们先看看我们的正则匹配代码。

        /url\(((http(s?)\:)?(\/\/)?[^"\/]*)?(\/)?([^")]*)/iu    ,i不区分大小写, u不贪婪模式。

        url() 这个就是url开头,包含()这个里面的内容,其中()要用\转义下。也就是url\(\)

        http(s?) 表示 http或着https开头的   ?表示匹配0次或者1次,就是说匹配http 或者https的。

        (http(s?)\:)?表示   http:或者https:,为什么要这么写呢?因为有时候可能要匹配到 //这个情况的。然后我们看看下面的

        (http(s?)\:)?(\/\/)?  表示匹配http:// 或者https:// ,或者匹配 //这几个情况

        [^"\/]*)?表示匹配 不是"或者/的其他任意字符,主要作用就是为了后面加域名比如http://fz.tywl88.com 或者https://fz.tywl88.com 或者 //fz.tywl88.com  这三种情况。

        (\/)? 表示匹配/或者不匹配,意思就是/ 可有可无。

        ([^")]*表示不匹配双引号的其他字符。

        然后,我们来看括号

        第一个\( 这个就不用看了,他是当成了识别字符,不是正则的计算分组字符。

        (http(s?)\:)?(\/\/)?[^"\/]*)?(\/)?([^")]*)

        从这段代码开始看。

        第一个括号是 ((http(s?)\:)?(\/\/)?[^"\/]*)?(\/)?([^")]*)  包含全部的。

        第二个括号是  ((http(s?)\:)?(\/\/)?[^"\/]*)?

        第三个括号是 (http(s?)\:)?这里的。

        第四个括号是  http(s?)

        第五个括号是  (\/\/)?

        第六个括号是  (\/)?

        第七个括号是  ([^")]*)  其中国第七个就是我们需要的内容,在数组种,是以0开始的,所以第七个的下标就是6,

        我们看看我们的效果截图

        

            array(7) {

              [0]=>

              array(6) {

                [0]=>

                string(27) "url(http://images/ydhlw.jpg"

                [1]=>

                string(25) "url(..//images/dixian.jpg"

                [2]=>

                string(36) "url(https://Img/images_p/cust1/1.jpg"

                [3]=>

                string(29) "url(/Img/images_p/cust1/2.jpg"

                [4]=>

                string(30) "url(//Img/images_p/cust1/3.jpg"

                [5]=>

                string(30) "url(./Img/images_p/cust1/4.jpg"

              }

              [1]=>

              array(6) {

                [0]=>

                string(13) "http://images"

                [1]=>

                string(2) ".."

                [2]=>

                string(11) "https://Img"

                [3]=>

                string(0) ""

                [4]=>

                string(5) "//Img"

                [5]=>

                string(1) "."

              }

              [2]=>

              array(6) {

                [0]=>

                string(5) "http:"

                [1]=>

                string(0) ""

                [2]=>

                string(6) "https:"

                [3]=>

                string(0) ""

                [4]=>

                string(0) ""

                [5]=>

                string(0) ""

              }

              [3]=>

              array(6) {

                [0]=>

                string(0) ""

                [1]=>

                string(0) ""

                [2]=>

                string(1) "s"

                [3]=>

                string(0) ""

                [4]=>

                string(0) ""

                [5]=>

                string(0) ""

              }

              [4]=>

              array(6) {

                [0]=>

                string(2) "//"

                [1]=>

                string(0) ""

                [2]=>

                string(2) "//"

                [3]=>

                string(0) ""

                [4]=>

                string(2) "//"

                [5]=>

                string(0) ""

              }

              [5]=>

              array(6) {

                [0]=>

                string(1) "/"

                [1]=>

                string(1) "/"

                [2]=>

                string(1) "/"

                [3]=>

                string(1) "/"

                [4]=>

                string(1) "/"

                [5]=>

                string(1) "/"

              }

              [6]=>

              array(6) {

                [0]=>

                string(9) "ydhlw.jpg"

                [1]=>

                string(18) "/images/dixian.jpg"

                [2]=>

                string(20) "images_p/cust1/1.jpg"

                [3]=>

                string(24) "Img/images_p/cust1/2.jpg"

                [4]=>

                string(20) "images_p/cust1/3.jpg"

                [5]=>

                string(24) "Img/images_p/cust1/4.jpg"

              }

            }


        到这里,我们就在用preg_replace来做替换就好了。我们看看代码

        $html= preg_replace('/url\(((http(s?)\:)?(\/\/)?[^"\/]*)?(\/)?([^")]*)/iu','url(./${6}',$html);

        惠州网站设计

        基本就是对的,唯一的问题就是  ..//替换的时候出错了,但是目前这个..//在网页设计种,还没出现过。或者说这个写法是又问题的,不对的。所以这个特殊情况,我们就不用管了。


来源:欣欣仿站  惠州网站设计

                    

        

点击次数:290  更新时间:2022-02-22  【打印此页
下一条:网站收录的研究,惠州seo
上一条:惠州建站,使用thinkphp6多应用模式的时候常见报错?
返回产品列表

扫一扫,添加微信

双十一活动季

1:签到7天,即可下载模板

2:开放包月,包年终身会员

3:包月会员,低至10元每月

4:包年会员,低至100元每年

5:终身会员,低至300元永久

0.112380s