Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Регулярное выражение
Форумы портала PHP.SU » PHP » Регулярные выражения » Регулярное выражение

Страниц (1): [1]
 

1. LEONeso - 23 Августа, 2010 - 19:17:45 - перейти к сообщению
Есть регулярное выражение, вида:
PHP:
скопировать код в буфер обмена
  1. if (isset($url) && !preg_match("/^(?:http:\/\/)?[-0-9a-z._]*.\w{2,4}[:0-9]*$/", $url)){}


принимает ссылки вида http://forum.php.su/, http://www.forum.php.su/ , но не понимает без http://

помогите подлатать выражение
2. Uchkuma - 23 Августа, 2010 - 19:25:00 - перейти к сообщению
LEONeso, под ваше регулярное выражение подходят ссылки как с http:// так и без.
3. Саныч - 23 Августа, 2010 - 19:53:23 - перейти к сообщению
хм... под эту регулярку вобще может подойти практически любая строка...
4. Uchkuma - 23 Августа, 2010 - 19:58:39 - перейти к сообщению
Черт, действительно! )))
Где вы взяли такую регулярку? Покатываюсь со смеху
5. Саныч - 23 Августа, 2010 - 20:02:40 - перейти к сообщению
вот с моего сайта выдрал, может поможет
PHP:
скопировать код в буфер обмена
  1. /^(https?\:\/\/)?((www)|([\w\-]+)\.)?([\w\-]+\.){1,2}[a-z]{2,6}(\/[\-\wа-я]+)*(\/[\-\w\.\&\?\=\#а-я]+)*$/i
6. LEONeso - 23 Августа, 2010 - 20:39:07 - перейти к сообщению
Саныч, спасибо. Регулярное проверяет наличие http://?
7. Саныч - 23 Августа, 2010 - 21:08:43 - перейти к сообщению
LEONeso пишет:
Саныч, спасибо. Регулярное проверяет наличие http://?

у меня оно проверяет является ли строка ссылкой
Понимает и http://forum.php.su/post.php?act...ostid=1282585147 и просто forum.php.su/ и ссылки типа как у Википеди (где русские буквы используються)
А вам что нужна проверка на присутствие http:// ?
8. LEONeso - 23 Августа, 2010 - 21:20:12 - перейти к сообщению
да. чтоб было проще выводить ссылку.
9. Саныч - 23 Августа, 2010 - 21:46:24 - перейти к сообщению
ну тогда так
PHP:
скопировать код в буфер обмена
  1. /^https?\:\/\/((www)|([\w\-]+)\.)?([\w\-]+\.){1,2}[a-z]{2,6}(\/[\-\wа-я]+)*(\/[\-\w\.\&\?\=\#а-я]+)*$/i

все тоже самое, но если нет http:// или https://, то будет ошибка
10. LEONeso - 23 Августа, 2010 - 22:25:35 - перейти к сообщению
работает, но выдает лож, когда на конце ссылки слеш / и после ничего нет
11. Саныч - 23 Августа, 2010 - 22:57:19 - перейти к сообщению
LEONeso пишет:
работает, но выдает лож, когда на конце ссылки слеш / и после ничего нет
не учел этот факт...
так должно все работать
PHP:
скопировать код в буфер обмена
  1. /^https?\:\/\/((www)|([\w\-]+)\.)?([\w\-]+\.){1,2}[a-z]{2,6}(\/|((\/[\-\wа-я]+)*(\/[\-\w\.\&\?\=\#а-я]+)*))$/i

прошу прощения, просто регулярку сам писал, обо всем сразу не упомнишь
12. LEONeso - 24 Августа, 2010 - 03:51:19 - перейти к сообщению
Все отлично работает. спасибо.
13. JustUserR - 24 Августа, 2010 - 14:52:45 - перейти к сообщению
LEONeso Для проверки правильности вводимого URL-адреса можно использовать встроенную функцию parse_url - она работает достаточно эффективно и при этом позволяет определить правильность отдельный компонентов адреса и строки запроса в соответствии со стандартом

 

Powered by ExBB FM 1.0 RC1