2

正規表現にパターンを付けて、すべてを強制的に読み取らせたい。

http://example.com/w/2/1/x/some-12345_x.png


これを使った「some-12345_x」をターゲットにしたいのですが/\/(.*).png/、なんらかの理由で動作しません

/で始まり、.pngで終わる必要があることを強制的に記憶させるにはどうすればよいですか?

4

4 に答える 4

1

できるよ:

^.*/(.*)\.png$

/これは、最後から最後までの出来事をキャプチャし.pngます。

于 2012-10-09T14:15:16.993 に答える
1

拡張子を除いた最終的なファイル名を常に取得したい場合はsubstr()、正規表現を考え出す代わりにPHPを使用できます。

$lastSlash = strrpos($url, '/') + 1;
$name = substr($url, $lastSlash, strrpos($url, '.') - $lastSlash);

また、より読みやすい方法は、PHPのbasename():を使用することです。

$filename = basename($url);
$name = substr($filename, 0, strpos($filename, '.'));

実際に正規表現を使用するには、次のパターンを使用できます。

.*/([^.]+).png$

これをPHPで使用するにはpreg_match()

preg_match('|.*/([^.]+).png$|', $url, $matches);
$name = $matches[1];
于 2012-10-09T14:17:33.370 に答える
1

特定の理由でこの状況で正規表現を使用する必要があるかもしれませんが、使用しない場合の代替手段は次のとおりです。

$url = "http://example.com/w/2/1/x/some-12345_x.png";
$value = pathinfo($url);
echo $value['filename'];

出力:

some-12345_x

マニュアルからのpathinfo()

于 2012-10-09T14:18:58.433 に答える
1

どうですか:

~([^/]+)\.png$~

これは、文字列の最後/まで一致します。.png

于 2012-10-09T14:22:29.793 に答える