1

難しい正規表現に問題があります。絶対URL(httpおよびhttps)を検出するためのこの式があります

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

基本的にやりたいことは、スクリプトで定義されpreg_replaceたパスを URL の先頭に追加することです。$path基本的に、この正規表現は 2 つのキャプチャ グループになります。

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

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

uri が始まるまで完全に一致させてから、先頭に を追加するにはどうすればよい$pathですか? キャプチャ グループを正しく取得できないようです。

4

1 に答える 1

2

次のようなものを使用できます。

$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);
于 2012-06-14T19:37:13.340 に答える