PHP 正则表达式 : CSS Relative to Absolute

标签 php css regex url relative-path

我有一个困难的正则表达式问题。我有这个表达式来检测绝对 url(http 和 https

/(url {0,}\(( {0,}'| {0,}"|))(?!http|data\:).*?\)/im

我基本上想做的是使用 preg_replace 在 url 前加上我的脚本中定义的路径 $path。基本上这个正则表达式会产生两个捕获组:

group 1: (url {0,}\(( {0,}'| {0,}"|))(?!http).*?\)

group 2: ( {0,}'| {0,}"|)

我如何才能一直匹配到 uri 开始,然后在它前面加上 $path?我似乎无法正确设置捕获组。

最佳答案

你可以这样使用:

$re = '/\b url \s*+ \( \s*+ (?| " ([^"]*+) " | \' ([^\']*+) \' | (\S*+) ) \s*+ \) /ix';

$str = preg_replace_callback($re, function ($match) {
    $url = $match[1];
    // do some check on the url
    if(whatever)
        return $match[0]; // return without change

    // do whatever you want with the URL
    // return new url
    return "url(\"$url\")";
}, $str);

关于PHP 正则表达式 : CSS Relative to Absolute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11039758/

相关文章:

PHP $client->__soapCall ('method' , $params);对比。 $客户端->方法($参数);

php - 使用 PHP 从 Web 表单更新数据表

HTML 中的 PHP 和 SQL 表

PHP 接收并响应数以千计的请求——在幕后进行计算

jquery - 在包含元素可见之前开始 CSS 动画

HTML & CSS : ">" Greater than selector styles not applied

CSS3 选择指定类的每个第一项

javascript - 用于 trim 验证名称输入的空格的正则表达式问题

javascript - 无法将带有单引号的变量附加到 anchor 标记的标题

javascript - 正则表达式捕获最后一个空白字符和字符串结尾之间的字符