Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jefferson NF

[Resolvido] Problemas na hora de checar URL

Recommended Posts

Pessoal,

 

Estou utilizando uma classe PHP para validação de formulario junto com AJAX e estou com um problema, que não consigo resolver, na hora de validar a URL de um site.

A função é essa:

function check_url($url_val, $field, $req = "y") {
		if ($url_val == "") {
			if ($req == "y") {
				$this->messages[] = $this->error_text(1, $field);
				return false;
			} else {
				return true;
			}
		} else {
			//$url_pattern = "http\:\/\/[[:alnum:]\-\.]+(\.[[:alpha:]]{2,4})+";
                        $url_pattern = "[[:alnum:]\-\.]+(\.[[:alpha:]]{2,4})+";
			$url_pattern .= "(\/[\w\-]+)*"; // folders like /val_1/45/
			$url_pattern .= "((\/[\w\-\.]+\.[[:alnum:]]{2,4})?"; // filename like index.html
			$url_pattern .= "|"; // end with filename or ?
			$url_pattern .= "\/?)"; // trailing slash or not
			$error_count = 0;
			if (strpos($url_val, "?")) {
				$url_parts = explode("?", $url_val);
				if (!preg_match("/^".$url_pattern."$/", $url_parts[0])) {
					$error_count++;
				}
				if (!preg_match("/^(&?[\w\-]+=\w*)+$/", $url_parts[1])) {
					$error_count++;
				}
			} else {
				if (!preg_match("/^".$url_pattern."$/", $url_val)) {
					$error_count++;
				}
			}
			if ($error_count > 0) {
				$this->messages[] = $this->error_text(14, $field);
					return false;
			} else {
				return true;
			}
		}
	}

O que acontece é que se eu tiro a linha comentada o usuario é obrigado a digitar http://, se eu deixo como estar ele pode digitar direto www.site.com, mas se colocar o http:// na frente ele acusa erro, alguem pode me ajudar com isso?

 

Desde ja agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

$url_pattern = "(http\:\/\/)?[[:alnum:]\-\.]+(\.[[:alpha:]]{2,4})+";

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.