Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454

    [PHP] Regex per link a immagine

    Zalve gente,

    ho cercato nel forum ma non sono riuscito a trovare ciō che mi serve.

    Io passo tramite form un link, ad un'immagine, e vorrei controllare che sia un link valido e ad un'immagine.

    Per spiegarmi meglio

    codice:
    http://www.miosito.it/img.jpg #passa
    http://www.miosito.it/images/img.gif #passa
    ht://www.miosito.it/images/img.jpg #NON passa
    http://www.miosito.it/images/img #NON passa
    http://www.miosito.it/images/img.htm #NON passa
    
    #Insomma, qualsiasi estensione di immagine (jpg,jpeg,bmp,gif,png) con url corretto (http://www.miosito.it/) passa.
    Per cominciare ho provato cosė (senza la cosa della extension dato che non sono molto pratico.. se mi aiutate anche con quello giā che ci siete :P credo che devo mettere (jpg|jpeg|bmp|gif|png) alla fine ), non mi dā errore ma non mi fa neanche passare quelli giusti.

    Codice PHP:
    if(!preg_match("#\[[url]http://[/url]]?(.*?)#si",$img)){
    echo 
    "Controllare il link dell'immagine.";

    Spero di essere stato chiaro

    Grazie per l'aiuto.

  2. #2
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    prima di [http://] avevo messo un \ che ho notato essere sbagliato. Ora l'ho tolto e il risultato č che me li passa tutti, anche quelli sbagliati

    PS: Ho provato anche cosė:
    Codice PHP:
    preg_match("#(http://)?(.*?)#si",$img
    Stessa storia.

  3. #3
    Originariamente inviato da Nosfe
    PS: Ho provato anche cosė:
    codice:
    preg_match("#(http://)?(.*?)#si",$img)
    Stessa storia.
    Prova ad aggiungere alla fine della regex l'estensione
    codice:
    \.(jpe?g|bmp|gif|png)$
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  4. #4
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    Niente. Mi passa anche link sbagliati.

    ho provato con:

    http:www.miosito.it/img.jpg->lo passa
    http://www.miosito.it/img.jpg->lo passa

    In poche parole gli va bene tutto


    Per ora sto messo cosė:
    Codice PHP:
    preg_match("#(http://)?(.*?)\.(jpe?g|bmp|gif|png)$#si",$img
    Non sono bravo con le regex.. probabilmente č sbagliato il concetto dall'inizio...

  5. #5
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    Ok l'ho ripreso dall'inizio seguendo ancora una volta una guida e sono riuscito a fare qualcosa:
    Codice PHP:
    eregi("^(http)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[jpe?g|bmp|gif|png]$",$img
    Funziona proprio come volevo. Unico problema č che lo vorrei fare con preg_match, dato che dovrebbe essere pių veloce (e potente a quanto dicono).

    Aiut

  6. #6
    Originariamente inviato da Nosfe
    Ok l'ho ripreso dall'inizio seguendo ancora una volta una guida e sono riuscito a fare qualcosa:
    Codice PHP:
    eregi("^(http)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[jpe?g|bmp|gif|png]$",$img
    Funziona proprio come volevo. Unico problema č che lo vorrei fare con preg_match, dato che dovrebbe essere pių veloce (e potente a quanto dicono).

    Aiut
    Questo pezzo qui non va bene [jpe?g|bmp|gif|png]$ equivale a scrivere [befgjmnpt]$, cioč controlla solo che l'ultimo carattere sia uno di quelli della classe (fa passare un file img.p). Cmq te l'ho "tradotta" in PCRE (ho tolto qualche carattere tipo # ? &, che in teoria non dovrebbe esserci, e qualche parentesi):

    codice:
    $rex = '/^http:\/\/[a-z0-9.-]+\.[a-z]{2,3}(:[a-z0-9]*)?\/[a-z0-9._\/\\\+%\$=~-]*\.(jpe?g|bmp|gif|png)$/i' ;
    echo preg_match($rex, $img) ;
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    Originariamente inviato da AnĒkin
    Questo pezzo qui non va bene [jpe?g|bmp|gif|png]$ equivale a scrivere [befgjmnpt]$, cioč controlla solo che l'ultimo carattere sia uno di quelli della classe (fa passare un file img.p). Cmq te l'ho "tradotta" in PCRE (ho tolto qualche carattere tipo # ? &, che in teoria non dovrebbe esserci, e qualche parentesi):

    codice:
    $rex = '/^http:\/\/[a-z0-9.-]+\.[a-z]{2,3}(:[a-z0-9]*)?\/[a-z0-9._\/\\\+%\$=~-]*\.(jpe?g|bmp|gif|png)$/i' ;
    echo preg_match($rex, $img) ;
    Grazie mille AnĒkin, ora funziona perfettamente! Queste regex non mi vogliono entrare in testa

    Ora me lo guardo con calma

  8. #8
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    AnĒkin mi si č presentato un problema. Se nel link c'č per esempio l'ip di un server (es. http://83.1.56.789/img.jpg) oppure http://localhost/img.jpg non me li prende come buoni. Per quanto riguarda il localhost mi va pure bene, ma per l'ip meno.

    Sapresti dirmi dove cambiare?

  9. #9
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    up

  10. #10
    Prova cosė, ovviamente non viene controllata la correttezza dell'ip. Eventualmente la si aggiunge:

    codice:
    $rex = '/^http:\/\/([a-z0-9.-]+\.[a-z]{2,3}|\d{1,3}(\.\d{1,3}){3}|localhost)(:[a-z0-9]*)?\/[a-z0-9._\/\\\+%\$=~-]*\.(jpe?g|bmp|gif|png)$/i' ;
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.