preg_match проверка

vankata

Registered
имам една форма и как с php да проверя дали е въведен правилен текст
текста трябва да съдържа

http(s)://site.com/get:page

благодаря предварително на всеки отзовал се

нещо такова трябва да е ама немога да го съчиня

Код:
if(preg_match("@^(?:http://)?([^/]+)@i", $string))
{
  echo 'valid link';
}
 
Код:
$str="https://site.com/get:page";

$preg=preg_match('/^[a-z\:\/\/]{7,8}+[a-z0-9]+\.[a-z]{2,6}+\/[a-z]{3}+\:[a-z]/', $str);

if ($preg)
{
	echo "OK";
}
else
{
	echo "error";
}
 
afsh каза:
Един вариант и от мен:
Код:
$preg=preg_match('/^https?:\/\/[a-z0-9]+\.[a-z]{2,6}\/get\:[a-z0-9]+\/?/', $str);

Целта е да не се обвързва с определени думи .. Казваш какви са позволените знаци, до коло знака да са и това е, губи се смисъла иначе ..
 
kulov каза:
Целта е да не се обвързва с определени думи .. Казваш какви са позволените знаци, до коло знака да са и това е, губи се смисъла иначе ..
Съгласен съм колега. Но тогава израза би трябвало да включва и задължителното тире, което е позволено в името на домейна.
Бих направил лека корекция на регулярният ми израз, като добавя само тирето:
Код:
$preg=preg_match('/^https?:\/\/[a-z0-9-]+\.[a-z]{2,6}\/[a-z0-9-]+:[a-z0-9-]+/', $str);

А можеш ли да ми кажеш защо са ти тия плюсове?
[a-z\:\/\/]{7,8}+ - този
[a-z]{2,6}+ - този
[a-z]{3}+ - и този
Абсолютно излишни са.
 

Back
Горе