Сравнение переменных

Dreammaker

***=Ф=***
Пример урла: http://site.ru/razdel_r3.html, где 3 - это id раздела.

Yii (вопрос не собственно его касается, поэтому в этом разделе пишу) после роутинга возвращает id раздела в виде строки.

Но в урле можно прописать http://site.ru/razdel_r000000000000000000003.html, и все равно показывается эта же страница.

С точки зрения SEO не хотелось бы дублей страниц, поэтому здесь как вариант делать редирект со страниц с лидирующими нулями на "обычные".

Собственно, вопрос: как сравнивать полученные строки?

if ($_GET['r'] !== intval($_GET['r']))
не проходит - после приведения к целому для сравнения и левая часть условия приводится к целому, тогда в любом случае получается 3===3.

Был предложен вариант по типу

if ((string)intval($_GET['r']) !== $_GET['r'])

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

В общем, ситуация элементарная, но почему-то туплю. Можно почистить просто нули в начале, но хотелось бы понять какой есть более элегантный путь. Интерес уже чисто академический, но он показал место, где я плаваю.
 

hell0w0rd

Продвинутый новичок
Добавьте регулярку на id
В симфони это делается так:
Код:
blog:
    path:      /blog/{page}
    defaults:  { _controller: AcmeBlogBundle:Blog:index, page: 1 }
    requirements:
        page:  \d+
 

Dreammaker

***=Ф=***
\d+ это и сейчас задаётся в правиле роутинга, но 0 ведь тоже \d, да и в целом переменная в Yii отдаётся как строка в итоге.

Но тут именно момент в том, чтобы редиректить 301-ым на ту же страницу, но с правильным урлом, а не отдавать 404.

Ну и для себя хочется понять как сравнивать такие строки без гирлянды функций :)
 

riff

Новичок
А с какой стати гуглу взбредёт в голову лезть по адресу r00000003, если на сайте нет таких ссылок?
 

Dreammaker

***=Ф=***
Меня скорее яндекс интересует, но суть от этого не меняется - кроме ботов ещё есть живые люди, которые могут спокойненько добавить вручную в аддурилку дубли у конкурента. Что не часто, но все же бывает.

Но тут даже не вопрос в том для чего сделать. Скорее интересно где я туплю с приведением типов.
 

AmdY

Пью пиво
Команда форума
rel="canonical"
У тебя лишь часть проблемы с нуллями, есть же ещё разные ?foo=bar
 
Сверху