preg_match

4uva4ok

Писатель
Регистрация
3 Авг 2011
Сообщения
0
Реакции
0
Мне надо написать регулярное выражение так что ссылка была формата Для просмотра ссылки Войди или Зарегистрируйся
(цифры будут меняются)

И еще что б было просто Для просмотра ссылки Войди или Зарегистрируйся
пытался, но не получается, после цифр можно писать что угодно(
PHP:
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");
}
 
Вы меня извините, но чтобы дать ответ на Ваш вопрос - нужно быть телепатом. Нельзя ли подробнее объяснить, какая целевая строка и какой результат Вам нужно из нее получить???
 
PHP:
echo url_check('http://сайт.ru/users/364') . "\n";
echo url_check('http://сайт.ru/users/364/') . "\n";
echo url_check('http://сайт.ru/users/364/33') . "\n";
echo url_check('http://vstatuse.ru/users/364/') . "\n";
echo url_check('http://vstatuse/users/33/') . "\n";
echo url_check('http://vstatuse/33/') . "\n";
echo url_check('http://vstatuse.dfsf.dsf/33/') . "\n";
echo url_check('http://vstatuse.dfsf.dsf/33/fds/') . "\n";
 
function url_check( $url ) {
    if (! preg_match('|^http(s)?://[a-z0-9а-я-]+(.[a-z0-9а-я-]+)*(:[0-9]+)?\/users\/[0-9]+(/*?)?$|isu', $url) ) {
        return $url . ' - Неверный формат запроса! Проверьте URL';
    } else {
        return $url . ' - ok';
    }
}

Вот результаты теста регулярного выражения:

Для просмотра ссылки Войди или Зарегистрируйся - ok
Для просмотра ссылки Войди или Зарегистрируйся - ok
Для просмотра ссылки Войди или Зарегистрируйся - Неверный формат запроса! Проверьте URL
Для просмотра ссылки Войди или Зарегистрируйся - ok
Для просмотра ссылки Войди или Зарегистрируйся - ok
Для просмотра ссылки Войди или Зарегистрируйся - Неверный формат запроса! Проверьте URL
Для просмотра ссылки Войди или Зарегистрируйся - Неверный формат запроса! Проверьте URL
Для просмотра ссылки Войди или Зарегистрируйся - Неверный формат запроса! Проверьте URL

В тесте использовалась кодировка UTF-8, что видно по модификатору u регулярного выражения.
 
Вы меня извините, но чтобы дать ответ на Ваш вопрос - нужно быть телепатом. Нельзя ли подробнее объяснить, какая целевая строка и какой результат Вам нужно из нее получить???
У меня есть страница site.ru/id1 (id1 меняется в зависимости от пользователя - id2, id 536 и т.д.) мне надо задать такое условие чтоб в адресную строку кроме site.ru/id1 нельзя вводить
Пример:
site.ru/id1 - true
site.ru/id3a- false
site.ru/index.php?=id1- false
site.ru/idoo1-false
и тому подобное
 
PHP:
if (!preg_match ('/^http\:\/\/site\.ru\/id([0-9]+)$/', $url, $matches)) die ('Уйди, противный...');

Что-то в этом роде?
 
PHP:
if (!preg_match ('/^http\:\/\/site\.ru\/id([0-9]+)$/', $url, $matches)) die ('Уйди, противный...');

Что-то в этом роде?

Вроде того что надо, но что то не работает может что то не так написал
PHP:
if (!preg_match ('/^http\:\/\/second\/id([0-9]+)$/', $id)){
exit("<p>Неверный формат запроса! Проверьте URL</p>");
}
61jrh3ofcunk.jpg
 
Перед этим кодом суньте:
PHP:
die (var_export ($id, true));
И скиньте сюда результат.
 
'59'
 
Так у Вас там уже готовая ID. Не пойму, на кой вообще там нужна регулярка? Вполне сойдет конструкция в стиле:
PHP:
if (is_numeric ($id)) ...
Но вообще, я так подозреваю, что сама переменная $id не особо пригодна для использования. Скорее всего, Ваш скрипт уже заведомо парсит URL, выбрасывая из него все лишнее, и выбирая только нужную информацию. Соответственно, URL типа site.ru/id3a автоматом конвертируется в нужную ID. А почему бы не попробовать взять данные URL из "другого места"? На худой конец, брать напрямую из глобальных переменных. Например:
PHP:
if (!preg_match ('/\/id(?i)([0-9]+)$/', $_SERVER['REQUEST_URI'])) die ('Die!');

Работа у нас такая. :D
Если будут возникать еще вопросы - можете писать в личку, дабы не мусорить форум. Если есть в сети - отвечаю обычно быстро.
 
Назад
Сверху