Visualizzazione risultati 1 fino 4 di 4

Discussione: Regex e url associato con icona

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito Regex e url associato con icona

    Ciao a tutti

    ho un campo di nome links dove vengono memorizzati degli indirizzi web, sono tutti separati andando a capo riga

    esempio:

    http://www.site1.com/perma/doom-rock.htm
    http://www.site2.net/mod/doom.html
    https://www.site3.com/m/doom-rock
    http://site4.com/doom
    https://site5.com/doom


    quello che vorrei ottenere e creare una funzione che controlla l'url ed estrae i dati cosi


    site1.com
    site2.net
    site3.com
    site4.com
    site5.com


    poi tramite la funzione Switch viene controllato l'url se presente nella lista e viene visualizzato il favicon.ico associato


    site1.com = favicon1.ico
    site2.net = favicon2.ico
    site3.com = favicon3.ico
    site4.com = favicon4.ico
    site5.com = favicon5.ico



    penso che sia necessario un regex per questo


    codice che richiama sites.php

    Codice PHP:
    <?php

    // include il codice

    include ("sites.php");

    ?>

    funzione sites.php

    Codice PHP:

    <?php
    $sites
    = $row['links'];
    $web = explode("\r\n", $sites);
    foreach(
    $web as $url){
    $url = trim($url);
    switch (
    $url)
    {


    case
    'site1.com':
    echo
    $url. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;';
    break;

    case
    'site2.net':
    echo
    $url. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon2.ico"></img>' . '&nbsp;&nbsp;' ;
    break;

    case
    'site3.com':
    echo
    $url. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon3.ico"></img>' . '&nbsp;&nbsp;';
    break;

    case
    'site4.com':
    echo
    $url. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon4.ico"></img>' . '&nbsp;&nbsp;' ;
    break;

    case
    'site5.com':
    echo
    $url. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon5.ico"></img>' . '&nbsp;&nbsp;' ;
    break;


    default:
    echo
    $url. '&nbsp;' . '(<span style="color:red;"> no flag</span>)' .'<img src="http://forum.it.altervista.org/image_upload/sites/nomatch.gif"</img>' . '&nbsp;&nbsp;' ;


    }
    }


    ?>
    Ultima modifica di blackskyisback : 27-08-2021 alle ore 12.30.09

  2. #2
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    questo codice funziona e restituisce cio' che io volevo (senza regex)

    https://3v4l.org/3facc#v5.6.0

    Codice PHP:
    <?php

    function get_host($url) {
    $host = parse_url($url, PHP_URL_HOST);
    $names = explode(".", $host);

    if(
    count($names) == 1) {
    return
    $names[0];
    }
    $names = array_reverse($names);
    return
    $names[1] . '.' . $names[0];
    }

    // Output for 5.6.0

    echo get_host('http://www.site1.com/perma/doom-rock.htm'); // site1.com
    echo "\n";
    echo
    get_host('http://www.site2.net/mod/doom.html'); // site2.net
    echo "\n";
    echo
    get_host('https://www.site3.com/m/doom-rock'); // site3.com
    echo "\n";
    echo
    get_host('http://site4.com/doom'); // site4.com
    echo "\n";
    echo
    get_host('http://site5.com/doom'); // site5.com

    Output for 5.6.0


    site1.com
    site2.net
    site3.com
    site4.com
    site5.com
    ho provato ad inserire lo switch case ma il risultato e' pessimo



    sites.php

    Codice PHP:
    <?php

    require_once "connetti.php";



    $host = $row['links'];
    function
    get_host($url) {
    $host = parse_url($url, PHP_URL_HOST);
    $names = explode(".", $host);

    if(
    count($names) == 1) {
    return
    $names[0];
    }

    $names = array_reverse($names);
    return
    $names[1] . '.' . $names[0];
    }
    switch (
    $names)
    {


    case
    'site1.com':
    echo
    $names. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;';
    break;

    case
    'site2.net':
    echo
    $names. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon2.ico"></img>' . '&nbsp;&nbsp;' ;
    break;

    case
    'site3.com':
    echo
    $names. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon3.ico"></img>' . '&nbsp;&nbsp;';
    break;

    case
    'site4.com':
    echo
    $names. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/favicon4.ico"></img>' . '&nbsp;&nbsp;' ;
    break;

    case
    'site5.com':
    echo
    $names. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/favicon5.ico"></img>' . '&nbsp;&nbsp;' ;
    break;


    default:
    echo
    $names. '&nbsp;' . '(<span style="color:red;"> no flag</span>)' .'<img src="http://forum.it.altervista.org/image_upload/sites/nomatch.gif"</img>' . '&nbsp;&nbsp;' ;


    }

    //echo get_host

    ?>
    la pagina che richiama la funzione

    Codice PHP:
    <?php

    // include la funzione

    require_once("sites.php");

    echo
    get_host;
    echo
    "\n";

    ?>
    Ultima modifica di blackskyisback : 27-08-2021 alle ore 14.51.36

  3. #3
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    aggiornamento

    ho optato per l'url diverso finche non trovo un'altra soluzione

    il codice va con regex ma lo switch case non capisco perche' non funziona



    per chi non ha capito devo passare l'url in regex poi confrontarlo con switch case e restituirmi l'url completo con l'icona corripondente


    Codice PHP:
    <?php

    $re
    = '/(?:vnc|s3|ssh|scp|sftp|ftp|http|https)\:\/\/[\w\.]+(?:\:?\d{0,5})|(?:mailto|)\:[\w\.]+\@[\w\.]+/';
    $haystack = $row ['links'];

    preg_match_all($re, $haystack, $matches);

    $text = implode("<br>\n\r", $matches[0]);
    //echo $text;
    //echo "<br>\n";
    echo '<font color="blue">' . '<b>' . count( $matches ) . '</b>' . '</font>' . " url were found.";

    echo
    '<br>';



    switch (
    true)
    {

    case
    'http://www.site1.com':
    echo
    $haystack. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;' . '<br>';
    break;

    case
    'http://www.site2.com' :
    echo
    $haystack. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;' . '<br>' ;
    break;

    case
    'http://www.site2.com':
    echo
    $haystack. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;' . '<br>';
    break;

    case
    'site4.com':
    echo
    $names. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/favicon4.ico"></img>' . '&nbsp;&nbsp;' ;
    break;

    case
    'site5.com':
    echo
    $names. '&nbsp;&nbsp;' . '<img src="http://forum.it.altervista.org/image_upload/favicon5.ico"></img>' . '&nbsp;&nbsp;' ;
    break;


    default:
    echo
    $names. '&nbsp;' . '(<span style="color:red;"> no flag</span>)' .'<img src="http://forum.it.altervista.org/image_upload/sites/nomatch.gif"</img>' . '&nbsp;&nbsp;' ;


    }

    ?>
    Ultima modifica di blackskyisback : 27-08-2021 alle ore 19.15.24

  4. #4
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Nuovo aggiornamento, ci sono degli sviluppi, sono riuscito a far funzionare lo switch riscrivendo il codice, il tutto viene eseguito perfettamente anche se il regex non e' come desideravo, infatti viene restituito questo

    era preferibile questo

    site1.com
    site2.net
    site3.com
    site4.com
    site5.com
    il problema e che adesso vicino all'icona viene restituito l'url elaborato con regex, io vorrei ottenere quello originale abbinato con la rispettiva icona, come nello screenshot




    ho studiato a lungo come aggirare questo problema e non sono riuscito a trovare la soluzione

    qualche suggerimento?


    ps: il codice serve a controllare i domini inseriti e i relativi duplicati abbinando il favicon

    Codice PHP:
    <?php
    $content
    = $row ['links'];

    $regex = "/(?:vnc|s3|ssh|scp|sftp|ftp|http|https)\:\/\/[\w\.]+(?:\:?\d{0,5})|(?:mailto|)\:[\w\.]+\@[\w\.]+/"; // SCHEME

    $regex2 = "/[a-z]+:\/\/\S+/";

    $matches = array(); //create array
    //$pattern = "/$regex/"; // codice originale
    $pattern = "$regex"; // link corto
    $pattern2 = "$regex2"; // link esteso

    preg_match_all($pattern, $content, $matches);

    print_r(array_values(array_unique($matches[0])));
    echo
    "<br><br>";
    echo
    implode("<br>", array_values(array_unique($matches[0])));
    echo
    '<br>';
    echo
    '<br>';
    echo
    '<font color="blue">' . '<b>' . count( $matches[0] ) . '</b>' . '</font>' . " url were found.";

    echo
    '<br>';
    echo
    '<br>';


    // start foreach
    foreach($matches[0] as $key => $value){


    switch(
    $value) // start switch
    {
    case
    'http://www.site1.com':
    if(
    $value === 'http://www.site1.com')
    {
    echo
    $value . '&nbsp;&nbsp;' . '<img src="../image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;' . '<br>';
    }
    //You can even do a nested switch on $value here.
    break;
    case
    'http://www.site2.net':
    if(
    $value === 'http://www.site2.net')
    {
    echo
    $value . '&nbsp;&nbsp;' . '<img src="../image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;' . '<br>';
    }
    //You can even do a nested switch on $value here.
    break;
    case
    'https://www.site3.com':
    if(
    $value === 'https://www.site3.com')
    {
    echo
    $value . '&nbsp;&nbsp;' . '<img src="../image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;' . '<br>';
    }
    //You can even do a nested switch on $value here.
    break;
    case
    'http://site4.com':
    if(
    $value === 'http://site4.com')
    {
    echo
    $value . '&nbsp;&nbsp;' . '<img src="../image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;' . '<br>';
    }
    //You can even do a nested switch on $value here.
    break;
    case
    'https://site5.com':
    if(
    $value === 'https://site5.com')
    {
    echo
    $value . '&nbsp;&nbsp;' . '<img src="../image_upload/sites/favicon1.ico"></img>' . '&nbsp;&nbsp;' . '<br>';
    }
    //You can even do a nested switch on $value here.
    break;


    default:
    echo
    $key. '&nbsp;' . '(<span style="color:red;"> no flag</span>)' .'<img src="../image_upload/sites/nomatch.gif"</img>' . '&nbsp;&nbsp;' . '<br>' ;
    }
    }



    ?>

Tags for this Thread

Regole di scrittura

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