0

特定の文字列からすべてのパスとファイル名を取得する方法を必死に見つけようとしています。

例)

src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.1') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.1') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.1') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.1#fontawesomeregular') format('svg');

以下を含む配列になります。

../fonts/, fontawesome-webfont.eot?#iefix&v=4.0.1
../fonts/, fontawesome-webfont.woff?v=4.0.1
../fonts/, fontawesome-webfont.ttf?v=4.0.1
../fonts/, fontawesome-webfont.svg?v=4.0.1#fontawesomeregular

私が今まで得たものは、次の正規表現です:

url\(\'(.*?)\/(.*?)\'

これに関する問題は、私が次のようになることです:

.., /fonts/fontawesome-webfont.eot?v=4.0.1
.., /fonts/fontawesome-webfont.woff?v=4.0.1
.., /fonts/fontawesome-webfont.ttf?v=4.0.1
.., /fonts/fontawesome-webfont.svg?v=4.0.1#fontawesomeregular

では、パス内の / の最後の出現を取得するには、何を考慮する必要がありますか?

助けてくれてありがとう、p

4

3 に答える 3

0

この特定のケースでは、この正規表現が機能するはずです。

((?<=url\(\')(?:[^'\/]+\/)+)([^\/']+(?=\'))

ここでデモ を見る

于 2013-10-28T11:33:51.277 に答える
0

これはうまくいくはずです:

$s = "src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.1') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.1') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.1') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.1#fontawesomeregular') format('svg');";

if (preg_match_all("~url *\('(\.\./fonts/)(.*?)'\)~i", $s, $arr)) {
   print_r($arr[1]);
   print_r($arr[2]);
}

出力:

Array
(
    [0] => ../fonts/
    [1] => ../fonts/
    [2] => ../fonts/
    [3] => ../fonts/
)
Array
(
    [0] => fontawesome-webfont.eot?#iefix&v=4.0.1
    [1] => fontawesome-webfont.woff?v=4.0.1
    [2] => fontawesome-webfont.ttf?v=4.0.1
    [3] => fontawesome-webfont.svg?v=4.0.1#fontawesomeregular
)
于 2013-10-28T11:15:30.960 に答える