Função de validação de dados incorporada para URLs

2

Eu tenho um formulário de front-end onde as pessoas podem enviar o URL do site.

Na verdade, estou verificando URLs no Wordpress com uma função PHP e gostaria de saber se existe uma função interna que me permite fazer isso?

Esta é a função que estou realmente usando:

function validateURL($URL) {
    $v = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";
    return (bool)preg_match($v, $URL);
}
    
por roastedtoast 09.03.2013 / 01:08

2 respostas

5

Use esc_url( $url ) para URLs que devem ser exibidos e esc_url_raw( $url ) se o URL deve ser enviado para o banco de dados.

  • O primeiro substituirá o valor comercial bruto & por & .
  • O segundo é um wrapper para o primeiro; apenas suprimirá o escape de e comercial.
  • Ambas as funções irão verificar o protocolo. Veja wp_allowed_protocols() para a lista: %código% Portanto, um URL como 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'tel', 'fax', 'xmpp' não será transmitido.

Estas funções não são exatamente validadoras . Eles sanitizam o valor. Mas você deve usá-los sempre que tiver um URL para salvar ou exibir.

Há também javascript:alert("Hacked!"); .

wp_validate_redirect( $location, $default ) é um URL aqui e $location um URL de fallback se o primeiro valor não valida. De seu bloco doc:

  

Valida um URL para uso em um redirecionamento.

     

Verifica se o $ location está usando um host permitido, se tiver um valor absoluto   caminho. Um plugin pode, portanto, definir ou remover o (s) host (s) permitido (s) para ou da lista.

Observe que os hosts permitidos não incluem todos os (sub) domínios de uma instalação de vários sites. Não faço ideia do porquê.

    
por fuxia 09.03.2013 / 02:45
3

Não há uma função que valide uma URL, apenas uma que limpe uma string para uso em uma URL ( sanitize_title ).

Existe um filtro PHP que validará URLs: FILTER_VALIDATE_URL .

    
por Milo 09.03.2013 / 01:14