Visualizzazione risultati 1 fino 9 di 9

Discussione: Prelevare solo parte di URL

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito Prelevare solo parte di URL

    Buongiorno,
    avrei bisogno di utilizzare preg_match per prelevare parte di un URL ma dato che con le regex non sono un campione nè uno che ne conosce non riesco...mi sapreste aiutare voi?

    L'URL è del tipo:

    http://www.valore.com

    • Le parti in grassetto sono da cancellare.
    • La parte in blu è da prelevare.
    • La parte in rosso è opzionale nell'URL.


    Alla fine di questo casino io nella variabile $url devo avere solamente "valore".

    Spero in un vostro aiuto,
    Michelangelo
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Questa funzione fa al caso tuo: parse_url

  3. #3
    Guest

    Predefinito

    Lo so già che non va bene ma non si sa mai :D
    Codice PHP:
    <?php
    $addr
    = "http://www.ciao.com/test/pagina.php?var=hey&poi=blabla.bubu"; //anche con infiniti parametri va sempre
    $parti = explode(".", $addr);
    echo
    $parti[1]; // restituisce ciao
    ?>
    Ultima modifica di edo98 : 17-07-2010 alle ore 12.15.46

  4. #4
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Questa funzione fa al caso tuo: parse_url
    Ci avevo pensato anch'io ma non so come usarlo nel mio caso.

    Citazione Originalmente inviato da edo98 Visualizza messaggio
    Lo so già che non va bene ma non si sa mai :D
    Codice PHP:
    <?php
    $addr
    = "http://www.ciao.com/test/pagina.php?var=hey&poi=blabla.bubu"; //anche con infiniti parametri va sempre
    $parti = explode(".", $addr);
    echo
    $parti[1]; // restituisce ciao
    ?>
    Ehm, non va bene perchè se valore ha dei punti mi viene diviso e preso solo in parte, per questo contavo su preg_match.
    Apprezzi l'aiuto? Offrimi un caffè!

  5. #5
    Guest

    Predefinito

    Ah ok, so farlo...

    aspetta che ci lavoro un po' su...

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Con parse_url potresti fare:
    Codice PHP:
    function val($url) {
    if(
    substr($url, 0, 7) != 'http://')
    $url = 'http://' . $url;

    $h = explode('.', parse_url($url, PHP_URL_HOST));
    return
    join('.', array_slice($h, strtolower($h[0]) == 'www' ? 1 : 0, -1));
    }

    echo
    val('http://www.valore.com'), "\n"; // valore
    echo val('valore1.valore2.valore3.it'); // valore1.valore2.valore3
    Ultima modifica di javascripter : 17-07-2010 alle ore 15.09.25

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    Anche così:
    Codice PHP:
    function val($url)
    {
    return
    substr($url,(($inizio = strpos($url,'www.')) === FALSE)?$inizio=0:$inizio+=4,strrpos($url,'.')-$inizio);
    }

    echo
    val('http://www.valore.com')."\n"; // valore
    echo val('valore1.valore2.valore3.it'); // valore1.valore2.valore3
    Ciao!
    Ultima modifica di alemoppo : 17-07-2010 alle ore 16.11.56

  8. #8
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    @alemoppo:
    Ammetto che adoro il metodo che hai usato, dico veramente! ( non mi sarebbe mai venuto in mente )

    Ma che succede se:
    Codice PHP:
    echo val('valore1.www.ciao.it'); // ciao
    Comunque volendo utilizzare le regexp:
    Codice PHP:
    function val($url) {
    preg_match('/(http:\/\/(www\.)?)?(.+)+?\./i', $url, $m);
    return
    $m[3];
    }

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Ma che succede se:
    Codice PHP:
    echo val('valore1.www.ciao.it'); // ciao


    vabbè dai... non capita sempre ...

    Infatti si dovrebbe tener conto che:

    Codice:
    valore1.www.ciao.it/index.php?parametro=valore1&parametro2=valore2'   //non funziona
    
    www.ciao.it/index.php?parametro=valore1&parametro2=valore.2 //non funziona
    ovvero:
    - prima del www non prende alcun valore
    -l'indirizzo non può contenere altri punti (.) dopo il .it (o .com, .org ecc...)

    ...in tutti gli altri casi, funziona (almeno, dovrebbe)... anche in questo:

    Codice:
    www.valore.www.ciao.it/index.php?parametro=valore1&parametro2=valore2 //funziona (almeno, dovrebbe)
    Ciao!
    Ultima modifica di alemoppo : 17-07-2010 alle ore 16.27.18

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •