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

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

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

 

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

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

тема: вытащить имя файла из длинной ссылки с помощью регэкспа
 
 автор: elenaki   (23.12.2005 в 19:40)   письмо автору
 
 

помогите составить регулярное выражение.
или дайте ссылку, где есть похожее.

есть ссылки типа file:///G:WWW/PHP/my-garden/img/1.jpg
с разными именами файлов. надо вытащить только имена файлов 1.jpg и т.д.
пути могут быть разные. начинать надо с конца строки и до первого слэша.
типы файлов тоже могут быть разные, но для них у меня есть вот это:
.(?:gif|jpg|png|bmp|tiff)

я долго пыталась, но мне или ничего не выдает или выдает ноль.

   
 
 автор: Евгений Петров   (23.12.2005 в 20:02)   письмо автору
 
   для: elenaki   (23.12.2005 в 19:40)
 

Это типа для SQL запроса чтоли нужно? Нужно именно при помощи регулярных выражений или можно обойтись другими функциями?

   
 
 автор: Евгений Петров   (23.12.2005 в 20:10)   письмо автору
 
   для: Евгений Петров   (23.12.2005 в 20:02)
 

Если нужно только регулярными, то можно примерно так:
<?
  $path 
"file:///G:WWW/PHP/my-garden/img/1.jpg";
  
preg_match("|.*/([a-z0-9]+\.?[a-z]*)|i",$path,$regs);
  echo 
"<pre>";
  
print_r($regs);
  echo 
"</pre>";
?>


Только исправьте места [a-z0-9] и [a-z] на соотв диапазонв. :) Просто лень было все указывать

   
 
 автор: elenaki   (23.12.2005 в 20:33)   письмо автору
 
   для: Евгений Петров   (23.12.2005 в 20:10)
 

не вижу привязки к концу строки - $... :( а от начала строки нет смысла, они все разные.
я предполагаю, надо так - привязку к концу строки (мы же не знаем, сколько перед именем файла будет слэшей), потом выбрать ВСЕ символы от конца строки до первого (от конца строки) слэша. кажется, в таком случае даже не надо проверять тип файла. но можно и проверить для порядка. это кажется так просто, но никак не получается...

ваш код выдает Array

   
 
 автор: Евгений Петров   (23.12.2005 в 20:52)   письмо автору
 
   для: elenaki   (23.12.2005 в 20:33)
 

Я не указал в конце U т.е. в силу жадности регулярных выражений выберется все (.*) до последнего слеша (/) а потом выберется имя файла ([a-z0-9]) и если есть - расширение (\.?[a-z]*).
А почему бы не воспользоваться стандартными ф-ями php?

<?
  $path 
"C:/WINDOWS/php.ini";
  echo 
"Папка: ".dirname($path)."<br>";
  echo 
"Файл: ".basename($path)."<br>";
?>

   
 
 автор: Евгений Петров   (23.12.2005 в 20:56)   письмо автору
 
   для: elenaki   (23.12.2005 в 20:33)
 

ваш код выдает Array
А так?
<?
  $path 
"file:///G:WWW/PHP/my-garden/img/1.jpg";
  
preg_match("|.*/([a-z0-9]+\.?[a-z]*)|i",$path,$regs);
  echo 
$regs[1];
?>

   
 
 автор: elenaki   (23.12.2005 в 21:51)   письмо автору
 
   для: Евгений Петров   (23.12.2005 в 20:56)
 

YES! то, что надо!
спасибки!

   
Rambler's Top100
вверх

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