in pratica vuoi che siano valide queste tipologie di url:
http://bla
https://bla
ftp://bla
www.bla
?
Devi costruirti la regex imponendo che la stringa cominci con quella determinata parola tipo:
$rex = '/^http:\/\/blabla/';
dA .. foto di viaggio
L'esperienza č il tipo di insegnante pių difficile.
Prima ti fa l'esame, e poi ti spiega la lezione.
Si, tenendo presente che http:// č giā nel campo, percui se ho ben capito dev'essere cosė:Originariamente inviato da AnĒkin
in pratica vuoi che siano valide queste tipologie di url:
http://bla
https://bla
ftp://bla
www.bla
?
Devi costruirti la regex imponendo che la stringa cominci con quella determinata parola tipo:
$rex = '/^http:\/\/blabla/';
if($url)
if (!(ereg("/^(http:\/\/https:\/\/ftp:\/\/www.)+.([a-z0-9]$/", $url)))
echo "inserire un'URL valido";
č corretto?
I casi vanno separati con gli or tipo (http|https|ftp). Come hai fatto tu nella prima parentesi ricerca tutta la stringa contenuta li dentro.Originariamente inviato da Braco
Si, tenendo presente che http:// č giā nel campo, percui se ho ben capito dev'essere cosė:
if($url)
if (!(ereg("/^(http:\/\/https:\/\/ftp:\/\/www.)+.([a-z0-9]$/", $url)))
echo "inserire un'URL valido";
č corretto?
Vedi che puoi raggruppare ulteriormente http e https scrivendo https? (s? dice che la s č opzionale, 0 o 1 occorrenza) dato che si differenziano per una sola lettera. In giro dovresti trovarne di regex giā fatte cmq abbozzandone una semplice comincerei con
come vedi ho raggruppato anche "://", dato che si ripeteva, ed ho messo opzionale tutta la prima parentesi ((https?|ftp):\/\/)?, mentre č obbligatorio sempre il www. e infine con \S+$ gli dico di cercare tutti i caratteri che siano diversi dai caratteri invisibili (spazio, a capo, tabulazione, etc), questo dovrebbe permettere anche la validazione di eventuali querystring.codice:$rex = '/^((https?|ftp):\/\/)?www\.\S+$/i' ;
dA .. foto di viaggio
L'esperienza č il tipo di insegnante pių difficile.
Prima ti fa l'esame, e poi ti spiega la lezione.
Adesso provo, hai messo www. obbligatorio, ma uno potrebbe usare "http://" che č giā predefinito nel campo senza usare www., che dici?Originariamente inviato da AnĒkin
I casi vanno separati con gli or tipo (http|https|ftp). Come hai fatto tu nella prima parentesi ricerca tutta la stringa contenuta li dentro.
Vedi che puoi raggruppare ulteriormente http e https scrivendo https? (s? dice che la s č opzionale, 0 o 1 occorrenza) dato che si differenziano per una sola lettera. In giro dovresti trovarne di regex giā fatte cmq abbozzandone una semplice comincerei con
come vedi ho raggruppato anche "://", dato che si ripeteva, ed ho messo opzionale tutta la prima parentesi ((https?|ftp):\/\/)?, mentre č obbligatorio sempre il www. e infine con \S+$ gli dico di cercare tutti i caratteri che siano diversi dai caratteri invisibili (spazio, a capo, tabulazione, etc), questo dovrebbe permettere anche la validazione di eventuali querystring.codice:$rex = '/^((https?|ftp):\/\/)?www\.\S+$/i' ;
Ho messo cosė ma da errore
//valida URL
if($url)
if (!(ereg("/^((https?|ftp):\/\/)?www\.)\S+$/i", $url))
echo "inserire un'URL valido"
Hai messo una parentesi in pių. Usa preg_match al posto di ereg, perchč credo che parte della sintassi che ho usato non sia valida con ereg.
Il fatto che http:// sia predefinito nel campo non č molto significativo perchč cmq tu analizzi la stringa inviata quindi a te interessa che ci sia in quella stringa, a prescindere da cosa metti come default value al campo input.codice:if($url) if (!(preg_match("/^((https?|ftp):\/\/)?www\.\S+$/i", $url))) echo "inserire un'URL valido" ;
In sostanza oltre ai casi prima citati vuoi che venga validato anche una cosa tipo http://forum.html.it !? Ora modifico..
EDIT:
cosė dovrebbe validare anche "http://forum.html.it", ma non "forum.html.it"codice:$rex = '/^((https?|ftp):\/\/|www\.)\S+$/i'; if($url) if (!preg_match($rex, $url)) echo "inserire un'URL valido" ;
dA .. foto di viaggio
L'esperienza č il tipo di insegnante pių difficile.
Prima ti fa l'esame, e poi ti spiega la lezione.
Quasi ci siamo, 2 cose: se io non inserisco niente (e cč sempre il predefinito value http://) esce l'alert, se invece cancello http:// non esce l'alert.Originariamente inviato da AnĒkin
Hai messo una parentesi in pių. Usa preg_match al posto di ereg, perchč credo che parte della sintassi che ho usato non sia valida con ereg.
Il fatto che http:// sia predefinito nel campo non č molto significativo perchč cmq tu analizzi la stringa inviata quindi a te interessa che ci sia in quella stringa, a prescindere da cosa metti come default value al campo input.codice:if($url) if (!(preg_match("/^((https?|ftp):\/\/)?www\.\S+$/i", $url))) echo "inserire un'URL valido" ;
In sostanza oltre ai casi prima citati vuoi che venga validato anche una cosa tipo http://forum.html.it !? Ora modifico..
EDIT:
cosė dovrebbe validare anche "http://forum.html.it", ma non "forum.html.it"codice:$rex = '/^((https?|ftp):\/\/|www\.)\S+$/i'; if($url) if (!preg_match($rex, $url)) echo "inserire un'URL valido" ;
2. Dopo l'ultimo punto (.) si invia anche se metto un carattere es: http://mario.k, non ci vorrebbero almeno 2 caratteri in fondo?
Le regole di un url ben formattato non le conosco, cmq puoi sostituire a \S+ altre regole pių precise.
Per esempio cosė:
Ho diviso in blocchi l'ultima parte di url, il blocco rosso puō essere lungo a piacere, ma non minore di due caratteri, il blocco viola č il dominio (net,com,it,etc) e il blocco verde č un eventuale querystring (opzionale percheč ha il "?" in fondo. Ma ripeto sono regole cosė, non sono sicuro della loro correttezza.codice:$rex = '/^((https?|ftp):\/\/[\w-]+\.|www\.)\w{2,}\.\w{2,4}(\?\S+)?$/i';
Per il problema del http:// io farei un controllo nell'IF che se la stringa č uguale a http:// si comporti come se l'url fosse vuoto.
dA .. foto di viaggio
L'esperienza č il tipo di insegnante pių difficile.
Prima ti fa l'esame, e poi ti spiega la lezione.
Non č importante che sia ben formattato, ciō che conta č che abbia i "prefissi" e dopo l'ultimo punto ci sia un dominio o un'ext (nel caso finisca con una pagina) di almeno 2 caratteri.Originariamente inviato da AnĒkin
Le regole di un url ben formattato non le conosco, cmq puoi sostituire a \S+ altre regole pių precise.
Per esempio cosė:
Ho diviso in blocchi l'ultima parte di url, il blocco rosso puō essere lungo a piacere, ma non minore di due caratteri, il blocco viola č il dominio (net,com,it,etc) e il blocco verde č un eventuale querystring (opzionale percheč ha il "?" in fondo. Ma ripeto sono regole cosė, non sono sicuro della loro correttezza.codice:$rex = '/^((https?|ftp):\/\/[\w-]+\.|www\.)\w{2,}\.\w{2,4}(\?\S+)?$/i';
Per il problema del http:// io farei un controllo nell'IF che se la stringa č uguale a http:// si comporti come se l'url fosse vuoto.
Io non uso il DB come faccio a controllare l'if?
quando fai il cotrollo dopo l'inviio del formOriginariamente inviato da Braco
[..]
Io non uso il DB come faccio a controllare l'if?
codice:if($url && $url!='http://') if (!preg_match($rex, $url)) echo "inserire un'URL valido" ;
dA .. foto di viaggio
L'esperienza č il tipo di insegnante pių difficile.
Prima ti fa l'esame, e poi ti spiega la lezione.