Повторения в рег. выражении

Патриот

Новичок
Повторения в рег. выражении

Здравствуйте, я тут велосипед изобрел :)
Не подскажете как правильнее?

PHP:
$muri=explode("/","$REQUEST_URI");
$regul= "/^";
foreach($muri as $a)
{
   if($a!=="")
   {
     $regul .= "[\/]{1}[a-zA-Z0-9\_]+";
   }
}
$regul .= "[\/]{1}[a-zA-Z0-9\.\?\=\&\_]{0,60}$/";
if(preg_match($regul, $REQUEST_URI))
{
print "Ok";
} else { print "Xakep?"; exit(); }
 

white phoenix

Новичок
не очень понимаю.. зачем это? REQUEST_URI содержит например "/talk/showthread.php?s=&threadid=76473&rand=0", $muri для него:
array(3) {
[0]=>
string(0) ""
[1]=>
string(4) "talk"
[2]=>
string(39) "showthread.php?s=&threadid=76473&rand=0"
}
Я думаю проще будет если код твой немного оптимизировать:
PHP:
$muri=explode("/",$REQUEST_URI); 
$regul= "/^".str_repeat("[\/]{1}[a-zA-Z0-9\_]+",count($muri)-1)."[\/]{1}[a-zA-Z0-9\.\?\=\&\_]{0,60}$/";
if (preg_match($regul,$REQUEST_URI)) {print "Ok";}
else {print "Xakep?"; exit;}
Далее... твой скрипт выводит "Ok" если строка вот какая: /object1/object2/objectN, где object - {1}[a-zA-Z0-9\_]+, а затем параметры [a-zA-Z0-9\.\?\=\&\_]{0,60}$. А зачем тебе это нужно? Тогда еще допиши литерал % туда.

-~{}~ 19.11.05 14:51:

Литерал % в символьный класс [a-zA-Z0-9\.\?\=\&\_] чтобы, к примеру на var1=Hello%20world не ругалось.
 

white phoenix

Новичок
Frol
почему?
> PHP FAQ: Регулярные выражения.
кидать пачками ссылку на руководство может любой, а предложить что-то по делу - нет.
 

algo

To the stars!
Как всегда, поднимается традиционный вопрос о географическом расположении места сбора травы.
 
Сверху