2013-02-21 19 views
25

Mi chiedo se questo è un modo corretto per controllare, se una stringa contiene solo un URL:Verificare se una stringa contiene solo un URL in PHP

if (stripos($string, 'http') == 0 && !preg_match('/\s/',$string)) { 
    do_something(); 
} 

stripos() controlla se inizia la stringa con "http"
preg_match() controlla se la stringa contiene spazi

In caso contrario, presumo che la stringa non sia altro che un URL - ma tale presupposto è valido? Ci sono modi migliori per raggiungere questo obiettivo?

+1

possibile duplicato [il modo migliore per controllare se un URL è valida?] (Http://stackoverflow.com/questions/2058578/the-best-way-to-check-if-a-url-is-valid) – trejder

risposta

83

Usa filter_var()

if (filter_var($string, FILTER_VALIDATE_URL)) { 
    // you're good 
} 

I filtri possono essere ancora più raffinata. See the manual per ulteriori informazioni.

+0

Grazie mille! (Penso che entrambe le risposte siano arrivate allo stesso tempo) – yan

+0

Grazie, questo è migliore di parse_url ($ stringa), perché qualsiasi cosa con due punti (:) verrebbe cancellata come un URL. Funziona molto meglio. Vorrei che ci fosse un modo per rilevare se fosse un url anche se non aveva http: // però. – alexander7567

+0

Questo non è riuscito a validare un URL in cui ho avuto il chracter 'å' in esso - ma l'URL funzionava. (Utilizzo di PHP 7.0) – TheStoryCoder

Problemi correlati