VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Вот уже 2 день безуспешно борюсь с preg_match()
Задача тривиальная, но то ли я туплю, то ли не понимаю как сделать.
У меня есть путь к каталогу, он может быть как в виндовс так и юникс виде
То есть
Вариант 1 - "C:\websites\homepages\www\includes\phpmorphy\dicts"
Вариант 2 - "/websites/homepages/www/includes/phpmorphy/dicts"
При этом в конце строки может быть, а может не быть "\" или "/" соответственно.
Хочу проверить наличие по этому пути файла.
Для этого я делаю проверку:
Вот такой вариант набросал. Второе условие можно убрать, если слеши гарантированно присутствуют.
PHP Code:
if ($i = preg_match('#([\\\/]+).*([\\\/]?)$#iU', $path, $matches) AND $matches[1] != $matches[2])
$slash = $matches[1];
else if ($i == 0) // Слешей в строке не обнаружено, но файл отделить нужно.
$slash = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? '\\' : '/');
else
$slash = '';
Можно и без preg_match обойтись, движений побольше надо сделать, но выполняться, вероятно, будет быстрее.
@SMak044
Эксперт
Join Date: May 2008
Награды в конкурсах:
Posts: 1,764
Версия vB: 3.8.4
Пол:
Reputation:
Expert 1705
Репутация в разделе: 132
0
MDM, Вот спасибо. Никогда бы не додумался... наверно.
Ну раз пошла такая пьянка, то почему выражение $test = '\'; дает ошибку в php. Имеется ввиду, что как бы символ не закрыт кавычкой. Что php по умолчанию воспринимает \ как начало regexp токена?
@MDM
Эксперт
Join Date: Jun 2006
Location: Петрозаводск
Posts: 249
Версия vB: 3.8.x
Пол:
Reputation:
Expert 1682
Репутация в разделе: 55
1
Quote:
Originally Posted by SMak044
Что php по умолчанию воспринимает \ как начало regexp токена?
В этом случае PHP воспринимает кавычку как текст, а не как специальный символ.
google: экранирующий слеш.