2013-11-17 6 views
3
$image= "some-name-of-my-image-640x480-123.jpg" 

Мне нужно извлечь 640x480 и 123.PHP - лучший способ получить эти значения?

Что работает для меня прямо сейчас:

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 

Есть ли что-то проще (умнее), чтобы сделать то же самое?

ответ

4

Для anyon е аллергия на регулярное выражение и PHP> = 5.2.0:

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

В $data вы получите:

Array 
(
    [0] => 640x480 
    [1] => 123 
) 
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'. –

+0

Отлично, спасибо вам обоим! – RhymeGuy

Смежные вопросы