使用preg_replace从文件路径跳过../

时间:2012-10-13 17:01:45

标签: preg-replace

我有一份css声明 background:url(corners / bl.png)no-repeat left bottom!important; 我需要在使用preg_replace的corner / bl.png之前添加一些东西 问题是我也有 background:url(../ images / gray / topmenu / active_l.png)no-repeat left center; 我需要跳过这个,因为它在url值中包含../。 我需要的是当值不包含../时获取url值。如果它只包含/然后得到它并替换它,如果../跳过它。

这是除了../问题之外的代码 $ new_file_content = preg_replace(“/(:|,)(\ s *?。?\ s ?)(\ s * \ burl)(\ s *()(['| \”] ?)([^ / | ^'| ^ \“| ^)] *)(['| \”]?)())/ i“,'$ 1 $ 2 $ 3 $ 4 $ 5'.implode(”/“,$ file_path_explode)。“/”。'$ 6 $ 7 $ 8',$ new_file_content);

我知道我需要添加另一个条件而不是 ([^ / | ^'| ^ \“| ^)] *) 但我无法弄清楚如何添加除../ [^(../)]或......之类的东西? 感谢

1 个答案:

答案 0 :(得分:1)

会做类似的事情: $new_file_content = preg_replace("/url\([\s]*(([^\.]{2})[^\)]+)/i", "url(". implode("/",$file_path_explode) ."/$1", $new_file_content); 适合你需要的东西?它会检查'url('具体,因此您只触及您在正则表达式中实际想要替换的内容。也不会匹配以url(.开头的任何内容