Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Espressioni regolari queste sconosciute....

    Ciao a tutti sto provando ad esercitarmi sulle espressioni regolari, ma ho dei problemi a risolvere questo caso:

    Vorrei costruire una RegEx che mi permetta di estrapolare solo il dominio dell'URL di un sito che ho in una variabile PHP.

    dato un indirizzo di partenza tipo:
    $sito = "http://www.ilmiosito.it/provatutto/altraprova";

    come devo impostare la RegEx per ottenere una roba del tipo:
    www.ilmiosito.it


    Il primo passo è ststo quello di impostare la formula:
    $sito = preg_replace("/^http:\\/\\//", "", $sito);

    da cui ottengo il risultato
    $sito = "www.ilmiosito.it/provatutto/altraprova";

    ma da qua nono so come continuare per escludere tutto quello che segue lo slash ovvero eliminare /provatutto/altraprova";

    Oppure cosa ancora migliore sarebbe da definire di estrapolare il contenuto che si trova tra
    la parte iniziale ^http:\\/\\// ed il primo carattere /, ma questo non so come farlo.

    Qualcuno mi potrebbe aiutare?

    Grazie a tutti.
    Paolo

  2. #2
    guarda l'example#3 a http://php.net/manual/en/function.preg-match.php


    Altrimenti puoi fare anche con explode:

    Codice PHP:
    $tutto "http://www.ilmiosito.it/provatutto/altraprova";

    $ex explode("/"$tutto);

    $shortsite $ex[2]; 

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    111
    oppure:

    Codice PHP:
    $url="http://www.ilmiosito.it/provatutto/altraprova";
     
     
        if(
    preg_match("/[www]{3}\.[a-z0-9]+\.[a-z]{2,4}/",$url,$match))
        {
        echo 
    "$match[0]";
        } 

  4. #4
    Grazie a tutti e due per la risposta.

    La soluzione di Seven7 è quello che cercavo

    Grazie.

  5. #5
    La soluzione di Seven7 e' errata:

    - trova solo URL con www
    - [www]{3} e' un modo inutilmente complicato di scrivere semplicemente "www"
    - un nome di dominio puo' contenere anche il trattino '-' quindi [a-z0-9] non e' sufficiente
    - questo non e' colpa sua ma questo stupido forum si mangia i backslash che dovrebbero essere messi prima dei punti

    codice:
    preg_match('#http://([^/]+)#i', $url, $match);
    echo $match[1];

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    ragazzi, sono anni che esiste la funzione parse_url() ...

  7. #7
    Ciao a tutti sto provando ad esercitarmi sulle espressioni regolari, ma ho dei problemi a risolvere questo caso:

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    111
    La soluzione di Seven7 e' errata:
    Concordo con te,io ho provato quella soluzione per il suo caso in cui l'url conteneva il www iniziale!

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da k.b
    ah gia', scusate, avevo letto in fretta

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 © 2025 vBulletin Solutions, Inc. All rights reserved.