2015-11-11 3 views
1

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

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

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

Вот это было бы: "-420x230.jpg" и "-210x370.png"

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

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

Как это сделать?

спасибо.

ответ

1

Вы можете использовать explode, количество '-'s и' 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

Спасибо за ответ – Baylock

1

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

+0

Спасибо, это помогло. – Baylock

1

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

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

Благодарим вас за ответ. Я буду использовать решение взрыва, но это все еще хорошо/ – Baylock

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