Небольшое регулярное выражение

12
S
На сайте с 11.03.2010
Offline
29
799

Всем доброго времени суток.

Еще очень туго соображаю в регулярных выражениях, но есть маленькая задачка и

решение

1. Задача, проверить строку вида "page-XX", где X-число, которое начинается не на 0, т.е. page-1, page-1010101 подходят, а page-01 не подходит.

2. Решение

if (ereg("^(page-)([1-9][0-9]+|[1-9]+)$",$str))

Правильноли я сделал? и нетли более изящного решения?

Заранее всем спасибо.

LEOnidUKG
На сайте с 25.11.2006
Offline
1776
#1

входные данные преобразовывать в int();

и не нужно тут регулярок.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
S
На сайте с 11.03.2010
Offline
29
#2

page-1 и page-01 дадут один и тотже результат 1, а строки разные, мне надо отсечь все, где есть 0 перед числом

S
На сайте с 28.10.2005
Offline
319
#3
secach:
page-1 и page-01 дадут один и тотже результат 1, а строки разные, мне надо отсечь все, где есть 0 перед числом

if ( $str !=== (int)$str ) {

}

Пойдет?

S
На сайте с 11.03.2010
Offline
29
#4
semenov:
if ( $str !=== (int)$str ) {


}

Пойдет?

Не пойдет, т.к. "page-1" !=== (int)"page-1" и "page-01" !=== (int)"page-01"

А вообще странно, данное условие почемуто порпускает вообще любую строку даже, когда строка равна просто "1".

P.s. Данная строка page-1....является частью url, потому и пытаюсь сделать жесткую проверку, чтобы не плодить кучу дублей и т.п.

LEOnidUKG
На сайте с 25.11.2006
Offline
1776
#5

Ладно ладно, уговорили :)

$site='page-1010101';

if (preg_match('@page-[1-9]+@smi',$site))

{

//Если всё ок.

}

Z1
На сайте с 09.12.2005
Offline
164
#6

if (preg_match("/^page-[1-9][0-9]*$/", $str))

S
На сайте с 28.10.2005
Offline
319
#7
secach:
Не пойдет, т.к. "page-1" !=== (int)"page-1" и "page-01" !=== (int)"page-01"

Аа


if (preg_match ( '/^page-0/', $str )) {

нихарошая строка

}
LEOnidUKG
На сайте с 25.11.2006
Offline
1776
#8
secach:
P.s. Данная строка page-1....является частью url, потому и пытаюсь сделать жесткую проверку, чтобы не плодить кучу дублей и т.п.

Куча дублей будет, если на вашем сайте будут неверные ссылки.

S
На сайте с 11.03.2010
Offline
29
#9
zweroboy1:
if (preg_match("/^page-[1-9][0-9]*$/", $str))

Спасибо, Ваш вариант работает), пока разбираюсь как))

secach добавил 13.01.2011 в 17:42

LEOnidUKG:
Ладно ладно, уговорили :)
$site='page-1010101';
if (preg_match('@page-[1-9]+@smi',$site))
{
//Если всё ок.
}

Пропускает много лишнего, xxxpage-1ds2

Хотя я наверное слишком уж заморачиваюсь, но пока в основном учусь, пытаюсь сделать "идеальный чпу" с четкой иерархией URL, шаг влево-шаг вправо 301 или 404

LEOnidUKG
На сайте с 25.11.2006
Offline
1776
#10
secach:
шаг влево-шаг вправо 301 или 404

Зачем? Это кроме вас никому не нужно.

ЧПУ помогает защитится от атак на mysql, если смотреть именно в этом профиле... а остальные жёсткие правила... ну если у вас куча времени, то пожайлуста.

12

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