PHP - 获取这些值的更好方法?

3
$image= "some-name-of-my-image-640x480-123.jpg"

我需要提取640x480123

目前对我有用的是:

list($dirname, $basename, $extension, $filename) = array_values(pathinfo($image));
$new = substr($filename, 0, strrpos($filename, '-')); //some-name-of-my-image-640x480
$post_id = substr($filename, strrpos($filename, '-')+1); //123
$resolution = substr($new, strrpos($new, '-')+1); //640x480

有没有更简单(更智能)的方法来实现相同的功能?
2个回答

4
您可以使用以下正则表达式:([0-9]+)x([0-9]+)-([0-9]+) 或者如评论中所建议的:(\d+)x(\d+)-(\d+) 来解析名称。
preg_match("/(\d+)x(\d+)-(\d+)/", $file_name, $data);

$data中,你将得到:
Array
(
    [0] => 640x480-123
    [1] => 640
    [2] => 480
    [3] => 123
)

3
[0-9]可以被替换为\d - Niet the Dark Absol

4

针对那些对正则表达式过敏且PHP版本为5.2.0或更高的人:

$data = array_slice(explode('-', pathinfo($image, PATHINFO_FILENAME)), -2);     

$data中,您将获得以下内容:
Array
(
    [0] => 640x480
    [1] => 123
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接