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

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

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

 

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

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

тема: Ограничивание длины строки.
 
 автор: nax   (08.11.2007 в 22:02)   письмо автору
 
 

Всем привет.
Сделана регулярка, проверяющая на валидность домашнюю страницу пользователя:
'^(http://)+[a-z0-9_.-]+\.+[a-z]{2,4}$'

Как-бы мне после этого сделать ограничение на длину вводимой строки, тоесть нужно как-то сказать в конце регулярки, что всё, что было до конца строки - {2,50}. В скобки какие-то поместитть чтоли?!

Такая мелочь, а потратил битый час на перепрочтение мануалов впустую, прошу помощи у вас.
Спасибо.

   
 
 автор: ddhvvn   (08.11.2007 в 22:06)   письмо автору
 
   для: nax   (08.11.2007 в 22:02)
 

а так:

'^((http://)+[a-z0-9_.-]+\.+[a-z]{2,4}){2,50}$' 

подходит?

   
 
 автор: nax   (08.11.2007 в 22:09)   письмо автору
 
   для: ddhvvn   (08.11.2007 в 22:06)
 

Нет, я так пробывал:

$email = "user@host.ru";
if(!eregi('^((http://)+[a-z0-9_.-]+\.+[a-z]{2,4}){2,50}$', $email)) echo "неверно<br />"

Выводит: неверно.

   
 
 автор: nax   (08.11.2007 в 22:15)   письмо автору
 
   для: nax   (08.11.2007 в 22:09)
 

Извините:

<?php
$home 
"http://site.ru";
if(!
eregi('^((http://)+[a-z0-9_.-]+\.+[a-z]{2,4}){2,50}$'$home)) echo "неверно<br />";

Выводите: "Неверно", хотя всё правильно.
Тяжёлый денек был :) заработался.

   
 
 автор: SHAman   (12.11.2007 в 14:45)   письмо автору
 
   для: nax   (08.11.2007 в 22:15)
 

А нельзя сначала проверить строку на длину, а потом регуляркой на проф-пригодность? Зачем лес городить?

   
 
 автор: nax   (13.11.2007 в 17:22)   письмо автору
 
   для: SHAman   (12.11.2007 в 14:45)
 

strlen + preg_match - очень не изящное решение. Приятно смотреть, когда всё проверяет одна функция.

   
 
 автор: Unkind   (12.11.2007 в 14:53)   письмо автору
 
   для: nax   (08.11.2007 в 22:15)
 

> Выводите: "Неверно", хотя всё правильно.
Неправильно. Это выражение для строка типа "http://example.com/http://example.com/".

   
 
 автор: kasmanaft   (12.11.2007 в 15:40)   письмо автору
 
   для: Unkind   (12.11.2007 в 14:53)
 

Даже "http://http://http://http://example.comhttp://http://http://http://example.com" :)

2nax
если уж так хочется проверить длинну строки, используя рег. выражения, можно попробовать вот так:
#^(?=.{1,50}$)http://[a-z0-9_.-]+\.+[a-z]{2,4}$#i (и использовать не eregi, a preg_match)

   
 
 автор: nax   (13.11.2007 в 17:21)   письмо автору
 
   для: kasmanaft   (12.11.2007 в 15:40)
 

Спасибо, работает.

   
Rambler's Top100
вверх

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