Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вытащить последние цифры из названия файла
 
 автор: SerG7   (22.11.2011 в 09:04)   письмо автору
 
 

Помогите с регулярным выражением
есть варианты
thR-123-77.uir
DghgD-gffg-74gfgf-77.html
vcvcvc-fdf7-fdfd34-77.php


надо вытащить последнее число между - и точкой (в частном случае получить 77)

  Ответить  
 
 автор: Гость   (22.11.2011 в 09:19)   письмо автору
 
   для: SerG7   (22.11.2011 в 09:04)
 

если в остальном шаблон не сильно меняется, то можно обойтись даже без регулярного выражения - например разбить строку explode(); строку по символам "-", взять последний кусок, его еще раз разбить по точке (или узнать позицию точки и отрезать все что после нее) и все.

  Ответить  
 
 автор: SerG7   (22.11.2011 в 10:17)   письмо автору
 
   для: Гость   (22.11.2011 в 09:19)
 

explode() не подойдет тк шаблон может меняться
DghgD--gffg-74gfgf-77.html
DghgD--gffg_74gfgf-77.html

критично что перед последним числом ( именно должно быть число) стоит дефис, а за ним точка

  Ответить  
 
 автор: Гость   (22.11.2011 в 10:25)   письмо автору
 
   для: SerG7   (22.11.2011 в 10:17)
 

<?php         
$str 
'DghgD--gffg-74gfgf-77.html';
$res explode('-'$str);
$res explode('.'$res[count($res)-1]);
echo 
$res[0];


Не проверял, но должно работать для всех приведенных вами шаблонов.

  Ответить  
 
 автор: cheops   (22.11.2011 в 11:30)   письмо автору
 
   для: SerG7   (22.11.2011 в 09:04)
 

Можно начать отталкиваться от следующего регулярного выражения
<?php
  $name 
"vcvcvc-fdf7-fdfd34-77.php";
  
$pattern "|(\d+)\.[a-z]+$|";
  
preg_match($pattern$name$out);
  echo 
$out[1];
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования