Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы с regexp - проверка формата строки
 
 автор: Flok   (03.05.2009 в 21:54)   письмо автору
 
 

Суть проблемы:

надо проверить, является ли строка нужного формата.
пример строки:
http://site/cgi-local/artpl.pl?com!ftema&tema!5848898069&razdel!r1&frtop!#frtop

выделенные жирным числа могут быть любые (во втором случае не больше 3 чисел)
пробовал 2мя способами (preg_match и ereg), оба не дают нужного результата.
Грешу на регулярное выражение.

Вот фрагмент кода:

if (!preg_match("/^http:\/\/site\/cgi-local\/artpl\.pl\?com!ftema&tema![0-9]+&razdel!r[0-9]{1,3}&frtop!#frtop$/", $url))
{$error[] =  "введённая Вами ссылка не является ссылкой на тему форума";}


Независимо от того, какая строка дана, скрипт обрабатывает её как несоответствующую нужной и заносит в $error строчку "введённая вами ..... форума"

Помогите найти ошибку)

  Ответить  
 
 автор: Trianon   (03.05.2009 в 22:07)   письмо автору
 
   для: Flok   (03.05.2009 в 21:54)
 

>...во втором случае не больше 3 чисел

не больше трех чего?

  Ответить  
 
 автор: nikita2206   (03.05.2009 в 22:08)   письмо автору
 
   для: Trianon   (03.05.2009 в 22:07)
 

да цифр)

  Ответить  
 
 автор: Trianon   (03.05.2009 в 22:09)   письмо автору
 
   для: nikita2206   (03.05.2009 в 22:08)
 

материал первого класса начальной школы.

  Ответить  
 
 автор: Flok   (03.05.2009 в 22:13)   письмо автору
 
   для: Flok   (03.05.2009 в 21:54)
 

извиняюсь за оговорку. Там действительно должно было быть слово "цифры" вместо "числа" )

  Ответить  
 
 автор: nikita2206   (03.05.2009 в 22:23)   письмо автору
 
   для: Flok   (03.05.2009 в 22:13)
 

напишите более существующую строку...

  Ответить  
 
 автор: Flok   (03.05.2009 в 22:31)   письмо автору
 
   для: nikita2206   (03.05.2009 в 22:23)
 

извиняюсь, не понял термина "существующая строчка".

  Ответить  
 
 автор: Trianon   (03.05.2009 в 22:32)   письмо автору
 
   для: Flok   (03.05.2009 в 22:13)
 

Выражение Ваше указанный в примере url замечательно пропускает.
Безо всякой ошибки.

<?php

$url 
'http://site/cgi-local/artpl.pl?com!ftema&tema!5848898069&razdel!r1&frtop!#frtop';

if (!
preg_match("/^http:\/\/site\/cgi-local\/artpl\.pl\?com!ftema&tema![0-9]+&razdel!r[0-9]{1,3}&frtop!#frtop$/"$url))
{
$error[] =  "введённая Вами ссылка не является ссылкой на тему форума";}
else
{
$error[] =  "Ok";}
print_r($error);
?>


А слово цифра пишется через и .

  Ответить  
 
 автор: Flok   (03.05.2009 в 22:51)   письмо автору
 
   для: Trianon   (03.05.2009 в 22:32)
 

Раз Вы говорите, что код правильный, проверил другие части кода, где участвует эта переменная. Обнаружил ошибку.

с одной страницы отправляю данную через post, а на второй странице, на которой проверяется строка, беру переменную из $_GET['url'] ... Досадная ошибка.


Спасибо всем за помощь.

  Ответить  
 
 автор: nikita2206   (04.05.2009 в 15:15)   письмо автору
 
   для: Flok   (03.05.2009 в 22:51)
 

судя по вашему регвыру, у вас сайт с доменом первого уровня "site"???

  Ответить  
 
 автор: nikita2206   (04.05.2009 в 15:24)   письмо автору
 
   для: nikita2206   (04.05.2009 в 15:15)
 

http://site/cgi-local/artpl.pl?com!ftema&tema!5848898069&razdel!r1&frtop!#frtop

выделенные жирным числа могут быть любые (во втором случае не больше 3 чисел)
пробовал 2мя способами (preg_match и ereg), оба не дают нужного результата.

preg_match('|http://[A-z0-9\-\.]+/cgi-local/artpl\.pl\?com!ftema&tema!\d+&razdel!r\d{1,3}&frtop!#frtop|', $url);

  Ответить  
 
 автор: Trianon   (04.05.2009 в 15:35)   письмо автору
 
   для: nikita2206   (04.05.2009 в 15:15)
 

>судя по вашему регвыру, у вас сайт с доменом первого уровня "site"???

Судя по регвыру, у автора адрес резолвится путем предварительного добавления доменного префикса.
И в этом нет ничегошеньки криминального.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования