Detectar si la sintaxis de una URL es correcta

Código PHP

PHP – Validaciones – preg_match http, ftp

Función que comprueba la sintaxis de una url, si esta bien formada o tiene algún carácter no válido.

Puede contener o no el protocolo, detectando http, https y ftp.

/**
 * Class HelperValidate
 */
abstract class HelperValidate
{
    /**
     * Comprueva la sintaxis de una url es correcta
     * Puede contener o no el protocolo.
     * Detecta el protocolo http, https y ftp
     *
     * @param      $url
     * @param bool $protocolo
     *
     * @return false|int
     */
    public static function isUrl($url, $protocolo = false)
    {
        // Carácteres permitidos
        $chars = '[a-z0-9\/:_\-_\.\?\$,;~=#&%\+]';
        if ($protocolo) {
            return preg_match("/^(http|https|ftp):\/\/" . 
                              $chars . 
                              "+$/i", $url );
        } else {
            return preg_match("/^".$chars."+$/i", $url );
        }
    }
}