Mod Rewrite Добавить тире в регулярку

nomarketing
На сайте с 23.09.2009
Offline
189
1009

Вот есть регулярка

RewriteRule ^test/[^_]+_(\d+)/[^_]+_(\d+)/$

Вот так работает : test/hello_5/hello_10/

Нужно что бы работало с тире: test/hello-world_5/hello-world_10/

Что нужно добавить туда, понимаю что тире но как правильно ?

Капитан покидает корабль последним
[umka]
На сайте с 25.05.2008
Offline
456
#1

Вы имели в виду дефис? :)

Так ваш вариант должен работать. Разве нет?

Лог в помощь!
grey109
На сайте с 15.06.2005
Offline
180
#2

А если заменить на [^_\-] ?

nomarketing
На сайте с 23.09.2009
Offline
189
#3
grey109:
А если заменить на [^_\-] ?

Нет, почему то не работает, т.е разделитель идет нижний прочекр _

т.е параметр передается только цифра 10 но если я добовляю в слово тире то не работает странно.

[umka]
На сайте с 25.05.2008
Offline
456
#4

Скорее всего, в этом случае срабатывают другие правила .htaccess

Потому что, ещё раз повторюсь, ваше правило (из первого сообщения) должно работать в обоих случаях. В него не нужно ничего добавлять.

Пример на PHP

$str="test/hello-world_5/hello-world_10/";

if (preg_match("#^test/[^_]+_(\\d+)/[^_]+_(\\d+)/$#", $str, $m)) {
print_r($m);
}

Результат:


Array
(
[0] => test/hello-world_5/hello-world_10/
[1] => 5
[2] => 10
)
nomarketing
На сайте с 23.09.2009
Offline
189
#5
'[umka:
;13405643']Скорее всего, в этом случае срабатывают другие правила .htaccess
Потому что, ещё раз повторюсь, ваше правило (из первого сообщения) должно работать в обоих случаях. В него не нужно ничего добавлять.
Пример на PHP
$str="test/hello-world_5/hello-world_10/";

if (preg_match("#^test/[^_]+_(\\d+)/[^_]+_(\\d+)/$#", $str, $m)) {
print_r($m);
}

Результат:

Array
(
[0] => test/hello-world_5/hello-world_10/
[1] => 5
[2] => 10
)

Извените, что то пошло не так.. вообщем заработало, но теперь не работает вот так


test-mod/[^_]+_(\\d+)/[^_]+_(\\d+)/$

т.е типа префикса сделал test-mod/

test-mod/hello-world_5/hello-world_10/

Как сделать ? или должно работать ?

dmitcat
На сайте с 26.05.2005
Offline
123
#6

RewriteRule ^test-mod/(.*)/(.*)/$ index.php?var1=$1&var2=$2 [L]

[L] - прекращает обработку дальнейших строк htaccess

Либо селяВи (http://www.puper.ru), либо селяВас (http://www.puper.ru)!!!
nomarketing
На сайте с 23.09.2009
Offline
189
#7
dmitcat:
RewriteRule ^test-mod/(.*)/(.*)/$ index.php?var1=$1&var2=$2 [L]

[L] - прекращает обработку дальнейших строк htaccess

Не не работает, не передаются переменные..

Вот в первом примере работало

Но не работает именно если есть тире.. test - mod

а без тире работает нормально, передает 2 параметра.

siv1987
На сайте с 02.04.2009
Offline
427
#8

^test/.+?_(\d+)/.+?_(\d+)/$

и все там с тире должно работать. Кеш браузера сбросьте.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий