PHP: получить строку между двумя последними обозначенными символами

1

У меня есть несколько изображений, имена файлов которых выглядят следующим образом:

  • мой-picture_001.79 -420x230.jpg
  • mypicture-002 -210x370.png
  • и т.д...

Независимо от имени файла, он всегда будет заканчиваться: "-NumberxNumber. Расширение"

Здесь это будет: "-420x230.jpg" и "-210x370.png"

Я хотел бы иметь возможность всегда извлекать два последних числа.

Я попытался использовать функцию "взорвать", но может быть так много "-" и ".". и "x" в имени файла, которое не помогает.

Как я могу это сделать?

Спасибо.

Теги:
string
explode

3 ответа

1
Лучший ответ

Вы можете использовать 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'
  • 0
    Спасибо за ответ
1

Я думаю, вам нужно регулярное выражение для извлечения этих двух чисел.

<?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

  • 0
    Спасибо за ответ. Я буду использовать решение взрыва, но это все еще хорошо /
1

Вы можете использовать strrchr, чтобы найти последнее вхождение "-" и вернуть остальную часть строки с этой точки до конца. Оттуда вы сможете легко извлечь то, что вам нужно.

  • 0
    Спасибо, это помогло.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню