Correspondência de URLs com expressões regulares
Expressões regulares podem ser assustadoras inicialmente, mas oferecem recursos poderosos de correspondência de padrões para diversos tipos de dados. No contexto de extração de URLs, é necessário um padrão flexível para acomodar variações nos formatos de URL.
Uma expressão regular robusta que pode capturar URLs com ou sem protocolos principais (por exemplo, "http://www" ou " www") é:
((https?|ftp)://)? // Optional SCHEME ([a-z0-9 !*(),;?&=$_.-] (:[a-z0-9 !*(),;?&=$_.-] )?@)? // Optional User and Pass ([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3}))) // Host or IP address (:[0-9]{2,5})? // Optional Port (/([a-z0-9 $_%-]\.?) )*/? // Path (\?[a-z &\$_.-][a-z0-9;:@&%= /$_.-]*)? // Optional GET Query (#[a-z_.-][a-z0-9 $%_.-]*)? // Optional Anchor
Para usar esta expressão em PHP, coloque-a entre aspas duplas e passe-a para a função preg_match junto com a URL que deseja avaliar. Por exemplo:
$url = 'www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
echo 'Matched URL without protocol';
}
Da mesma forma, para URLs com protocolos:
$url = 'http://www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
echo 'Matched URL with protocol';
}
Esse padrão deve abranger uma ampla variedade de formatos de URL e, ao mesmo tempo, proteger contra possíveis entradas maliciosas contendo caracteres como "/".
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3