Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   preg_match (https://forum.antichat.xyz/showthread.php?t=106749)

barnaki 18.02.2009 01:02

preg_match
 
есть код но все время выводит incorrect url format
(даже когда все в норме)
в чем может быть дело
а email работает

if (preg_match("/^[0-9a-zA-Z_]+@[0-9a-zA-Z_]+.[a-zA-Z]{2,6}$/",htmlspecialchars($_POST['email']),$user_data))
{
$email = $user_data[0];
}
else
{
$email = "incorrect email format";
}

if (preg_match("/^(http://|https://)?(www)?[\.]?[a-zA-Z0-9@-]+\.[a-z]{2,6}$/",
htmlspecialchars($_POST['url']),$user_data[0]))
{
$url = $user_data[0];
}
else
{
$url = "incorrect url format";
}

EST a1ien 18.02.2009 01:22

У меня почемуто вначале жаловался пхп на / заменил на # и параметр на GET
и у меня все норм.
if (preg_match("#^(http://|https://)?(www)?[\.]?[a-zA-Z0-9@-]+\.[a-z]{2,6}$#",htmlspecialchars($_GET['url']),$user_data[0]))
{
$url = $user_data[0];
}
else
{
$url = "incorrect url format";
}
print_r($url);

Array ( [0] => http://mytest.ru [1] => http:// )

1.php?url=http://mytest.ru

AkyHa_MaTaTa 18.02.2009 01:39

а ты не находиш что спец символы надо экранировать в регулярке(http:\/\/|https:\/\/)?

.:EnoT:. 18.02.2009 03:23

Цитата:

а ты не находиш что спец символы надо экранировать в регулярке(http:\/\/|https:\/\/)?
Если органичитель не слеш, то экранировать не нужно)

Сопстна не зная какие примерно урлы ТС собирается проверять, могу предположить что регулярка должна быть более менее универсальной.

PHP код:

preg_match("#^(http://|https://)?[www\.]?[a-z0-9-\.]*\.[a-z]{2,6}[/]?[a-z0-9-_\.\#\?/%:=]*$#i"$url$out

Пробелы не забудь убрать.

PHP код:

htmlspecialchars($_POST['url']) 

А вот это в регулярке не нужно)


З.Ы. ТС, может не стоит по каждому вопросу создавать отдельную тему? есть прикреплённые


Время: 05:37