0

私はこのようなcss文字列を持っています:

$string = "div#test {background: url(images/test.gif); width:100px; } div#test2 {background: url(../images/test2.gif); } ";

基本的に、url () の間のすべてをファイル名だけに置き換えたいと考えています。最終的には次のようになります。

$string = "div#test {background: url(test.gif); width:100px; } div#test2 {background: url(test2.gif); } ";

basename を適用するのと似ていますが、相対 URL およびそのようなすべてのインスタンスに適用されます。

何か案は ?

4

3 に答える 3

0

1 つの文字列で複数の div を一致させる必要がないと仮定すると、次のようにすることができます。

preg_replace(
    '@(.+url\()/?([^/]+/)*([^)]+)(\).+)@',
    '\\1\\3\\4',
    'div#test {background: url(images/test.gif); width:100px; }'
);

これにより、置換する複数の文字列を含む配列を渡すこともできます

于 2012-05-18T15:24:59.573 に答える
0

これを試して:

編集:正規表現を修正しました

<?php 

$string = "div#test {background: url(images/test.gif); width:100px; } div#test2 {background: url(../images/test2.gif); } ";
$output = preg_replace('/([\.\w\/]*\/)/', '', $string);

var_dump($output);
string(93) "div#test {background: url(test.gif); width:100px; } div#test2 {background: url(test2.gif); } "
?>
于 2012-05-18T15:12:22.720 に答える
0

ファイル名が変数に格納されていることを当然のことと考えて、次を使用できます

$string = preg_replace('~url(.+)~', 'url(' . $filename . ')', $string);

正規表現を学びたい場合は、www.regular-expressions.info が良い情報源です。

于 2012-05-18T15:16:57.690 に答える