замена слэша регулярным выражением

Статус
В этой теме нельзя размещать новые ответы.

unlex

Новичок
замена слэша регулярным выражением

Может я туплю, но у меня чет не получается..
Надо выражение "dir/file.ext" заменить на "file.ext"
Пишу так
PHP:
$var = preg_replace('/dir/','',$var);
Результат соответственно - "/file.txt" , а как слэш убрать?
Пробовал
PHP:
$var = preg_replace('/dir[\d]/','',$var);
- не получается...
 

Фанат

oncle terrible
Команда форума
unlex
тебе знаком синтаксис perl-совместимых регулярных выражений?
 

unlex

Новичок
читал я faq соответствующий, книга вот передо мной лежит, но чет пока никак. разберусь я конечно, но мне просто прям щас решение надо, потому как застрял )
 

Wicked

Новичок
"прям щас решение надо" на этом форуме обычно не прокатывает :)

что-ж, немного растолкую...

1) $var = preg_replace('/dir/','',$var);
это выражение значит
"заменить строку 'dir' (безо всяких слэшей) на пустую строку".

2) $var = preg_replace('/dir[\d]/','',$var);
значит
"заменить строку 'dir' и одну цифру (опять же, слэши тут непричем) на пустую строку".

лично для меня очевидно, что нужно указать в регулярном выражении, чтобы оно искало 'dir' со слэшом после него. Теперь есть мысли, как это сделать?
 

cDLEON

Онанист РНРСlub
А мне кажется, что человек забыл про ограничители =)
 

unlex

Новичок
$var = preg_replace('/dir[\D]/','',$var);
пробовал и так - результат все тот же )
 

Wicked

Новичок
Mr_Max
я тебя о том же могу спросить: что за мода использовать функции для работы со строками, когда речь идет про файлы? :) Дальше сем догадаешься, или подсказать?

-~{}~ 26.06.07 19:32:

Alexandre
8[ ]
 

Фанат

oncle terrible
Команда форума
ответы Alexandre - это отдельный жанр. За гранью добра и зла.
 

Wicked

Новичок
unlex
во-первых, если все так, как ты описываешь, то код
PHP:
$var = "dir/file.ext";
$var = preg_replace('/dir[\D]/','',$var);
print $var;
выводит как раз "file.ext", т.е. что тебе и требовалось. НО! это по чистой случайности, т.к. ты сам не понимаешь, что делаешь. ЗАЧЕМ тебе сдались \d и \D, которые значат "цифра" и "что угодно кроме цифр", когда речь идет про СЛЭШ?
 

unlex

Новичок
Ну поскольку слэш входит в категорию "все что угодно кроме цифр", я и решил что так будет верно. но не тут то было...
 

Wicked

Новичок
unlex
оно оказалось верным в случае с $var = "dir/file.ext";
но оно окажется НЕверным в случае, например, с $var = "dir_file.ext", потому что будет ложное (с точки зрения логики приложения) срабатывание.

Почему бы не сузить "все что угодно кроме цифр" до слэша, ну, муксимум, двух - прямого и обратного?
 

Wicked

Новичок
unlex
дак что мешает? ты пробовал?

только сначала включи показ ошибок:
error_reporting(E_ALL);
ini_set("display_errors", 1);

-~{}~ 26.06.07 20:07:

unlex
кстати, а нельзя поподробей о том, что ты хочешь сделать? Получить имя файлы по его полному пути? Или убрать первую директорию? Или убрать все вплоть до директории с названием именно dir?
 

unlex

Новичок
мне надо убрать название директории вместе со слэшем, оставив только имя файла
название директории может быть любым
 

Alexandre

PHPПенсионер
вот как выделить регуляркой
PHP:
 $var = preg_match('/\w+\.\w+$/',$var, $match);
print "\n";
print $match[0];
но лучше использовать предназначенные для этого функции :D
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху