2

我想给正则表达式一个模式并强制它全部阅读..

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

我想定位“some-12345_x”
我用了这个/\/(.*).png/,由于某种原因它不起作用

我如何强制它记住它必须以/开头并以.png结尾?

4

4 回答 4

1

如果您总是想获得最终的文件名,减去扩展名,您可以使用 PHPsubstr()而不是尝试提出正则表达式:

$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

在这种情况下,出于特定原因,您可能需要使用 reg-ex,但这里有一个您不需要的替代方法:

$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:15:16.993 回答
1

怎么样:

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

这将匹配除字符串末尾/之外的任何内容。.png

于 2012-10-09T14:22:29.793 回答