Ir para conteúdo

POWERED BY:

Arquivado

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

P3rukao

Validar URL Youtube

Recommended Posts

Aew pessoal,

 

Eu estou tentando validar uma url... mas não estou sacando como fazer isso..

 

Eu achei um script que valida a url toda:

$url = "http://www.youtube.com/watch?v=0hAkfgNy7P0";

if (!preg_match('|^http(s)?://[a-z0-9-]+(\.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url)) {
    echo "nao valido";
}
else echo "valido";

Mas o que eu queria era validar por exemplo... se o usuario não digitar os http:// ou o www. ou os dois juntos... e se ele não tiver digitado, daí o script adiciona na string o que tiver faltando...

 

Eu tentei fazer assim:

$URL = "http://www.youtube.com/watch?v=0hAkfgNy7P0";
$url = "";

$s = substr($URL, 0, 7);

if($s != "http://"){
    $url = "http://".$URL;
    $s = substr($url, 0, 11);
    if($s != "http://www."){
        $url = "http://www.".$URL;
    }
}
else
{
    $s = substr($URL, 0, 11);
    if($s != "http://www."){
        $url = "http://www.".$URL;
    }
    else $url = $URL;
}

Mas ele falha quando eu digito $URL = "http://youtube.com/watch?v=0hAkfgNy7P0";

 

Depois de fazer essa validação inicial gostaria de validar para saber se a url passada está no formato certo do youtube...

Como eu poderia fazer isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

eae p3rukao =]

 

bem man .. pensando aqui acho que ia se legal da ums explode() e conta o numero de caracters com strlen().. faz uma funcao com isso que vai jogando dai os erros de formato e no fim retorna =] ia fica bacana .. mas antes tem que da uma pesquisada pra ver se o formato possui sempre o mesmo numero de caracters ..

 

http://br.php.net/manual/pt_BR/function.strlen.php

http://br.php.net/manual/pt_BR/function.explode.php

 

valww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em vez de encher de if, pegue apenas o código do vídeo e monte a URL você mesmo. É mais simples e economiza processamento.

 

Porém há o problema de o usuário usar um sub-domínio, por exemplo, br.youtube.com.

 

Por isso você não pode exigir o uso do www nesse seu script.

 

 

Mas se você montar a URL apenas com base no código do vídeo, não terá problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana Beraldo... realmente acho que simplifica mais pra mim sim... o problema é que como não sou eu que vou manipular o site... então tenho que deixar a coisa mais genérica....

tipo: os usuários não vão ter muita paciencia se eu disser pra pegar somente uma parte da url quando for cadastrar... no geral... "eles" vão querer só copiar e colar a url inteira... intão nesse caso caberia a mim montar um script que "corrigisse" essa url informada para que ela pudesse ser validada...

 

Eu estava tentando achar alguma função que comparasse strings... daí eu via se na url que ele havia digitado, continha a parte válida da URL que seria o http://www.youtube.com/watch?v=. O que viesse depois disso naum importava...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, o que importa é o que vem depois do ?v=... o restante é igual em todos os vídeos. O que o Beraldo falou (se eu entendi corretamente) é você pegar SOMENTE esta parte que vem depois do ?v= e desconsiderar o restante da URL.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente o que o Matias falou. O usuário pode simplesmente copiar a URL, mas o script pega apenas o que vem após o "watch=". Não precisa pedir para o usuário postar apenas o código do vídeo, já que muitos não sabem manipular URLs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendi Matias...

 

Eu já faço isso de dar o explode... e pego somente o id... pra poder manipular de acordo com minha necessidade..

A questão eh...

 

SE o usuário colocar uma url que não tenha nada a ver com a URL do youtube?? tipo: http://forum.imasters.com.br/index.php...

Eu teria que validar isso pra naum dar erro no sistema...

 

 

...

 

Eu fiz esse exemplo aqui, usanso as duas urls que eu conheço do youtube:

$URL = "http://www.youtube.com/watch?v=0hAkfgNy9P0";
$URL2 = "http://www.youtube.com/watch?v=0hAkfgNy7P0&hl=pt-br&fs=1&rel=0&autoplay=1";

$delimiter = "youtube.com/watch?v=";
$delimiter2 = "youtube.com/watch?v=";

$pieces = explode($delimiter, $URL);

if($pieces[0] == $URL)
{
    $pieces = explode($delimiter2, $URL2);
    if($pieces[0] == $URL2) echo "<br />URL inválida";
    else 
    {
        $id = substr($pieces[1], 0, 11);
        echo "<br />ID: ".$id;
    }
}
else 
{
    $id = substr($pieces[1], 0, 11);
    echo "<br />ID: ".$id;
}

Dessa forma ele tá validando legal: Se o cara digitar uma url doida aí... que não seja uma das duas formas do youtube... ele acusa o erro e extrai o ID puro...

 

Acho que eh isso neah!?!

Ô.õ

\

Compartilhar este post


Link para o post
Compartilhar em outros sites

erm... igual ao que eu citei no inicio do post???

 

$url = "http://www.youtube.com/watch?v=0hAkfgNy7P0";

if (!preg_match('|^http(s)?://[a-z0-9-]+(\.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url)) {
    echo "nao valido";
}
else echo "valido";

esse daí soh valida se tiver com http:// junto, sinaum dá erro...

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.