У меня есть несколько изображений, имена файлов которых выглядят следующим образом:
Независимо от имени файла, он всегда будет заканчиваться: "-NumberxNumber. Расширение"
Здесь это будет: "-420x230.jpg" и "-210x370.png"
Я хотел бы иметь возможность всегда извлекать два последних числа.
Я попытался использовать функцию "взорвать", но может быть так много "-" и ".". и "x" в имени файла, которое не помогает.
Как я могу это сделать?
Спасибо.
Вы можете использовать explode
, количество "- и" x не должно иметь значения, поскольку вам всегда нужен конкретный.
$string = 'my-picture_001.79-420x230.jpg';
$last_half = end(explode('-', $string)); // '420x230.jpg'
$last_sec = reset(explode('.',$last_half)); // '420x230'
$values = explode('x', $last_sec);
echo $values[0] // '420'
echo $values[1] // '230'
Я думаю, вам нужно регулярное выражение для извлечения этих двух чисел.
<?php
$reg = '/(\d*)x(\d*).\D*/i';
$string = 'my-picture_001.79-420x230.jpg';
preg_match($reg, $string, $matches);
//print the result
echo "<pre>";
print_r($matches);
echo "</pre>";
?>
/D означает символы с не цифрами
/d обозначает символы цифр
/D * означает ноль или более символов без цифры
и символы, которые мы хотим извлечь, будут расположены внутри()...
Обычно я использую этот сайт для игры с регулярным выражением:
http://rubular.com/
и это учебник по регулярному выражению в php
http://www.phpro.org/tutorials/Introduction-to-PHP-Regex.html
Вы можете использовать strrchr, чтобы найти последнее вхождение "-" и вернуть остальную часть строки с этой точки до конца. Оттуда вы сможете легко извлечь то, что вам нужно.