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

    Estrarre pagina e descrizione del Link

    Ho quattro tipi di link: dal più semplice e pulito al più complesso e sporco.
    Codice PHP:
    $stringa1 '<a href="funzioni/funz001.htm">La funzione Somma.se a più condizioni</a>';
    $stringa2 '<a href="funzioni/funz001.htm" target="_blank">La funzione Somma.se</a>';
    $stringa3 '<a class="stile_link" href="http://www.miosito.it" title="Blah blah..">Vai qui.</a>';
    $stringa4 '<li><a ". (($choice == "info") ?  " class=\'currentN\'" : "") . " href="inf_record.php?settore=lab_mysql&amp;choice=info&amp;pref=inf&amp;file=inf_record">Informazioni sui record</a></li>'
    Da questi 4 link debbo estrarre il nome del file da aprire e la didascalia che accompagna ciascun link.
    Per estrarre questi elementi ho questi pattern.
    I primi due estraggono il nome del file e mi sembrano equivalenti ma nel codice uso il secondo.
    Il terzo pattern estrae la didascalia che accompagna i vari link.
    Codice PHP:
    //$pattern_1 = '#href="(.*?)"#';
    $pattern_1 '(href="(.*?)")';
    $pattern_2 '#">(.*?)</a\>#si'
    Il problema da risolvere
    Le didascalie vengono prelevate senza alcun problema usando il pattern_2.


    Per l'estrazione del nome del file c'è un problema.
    Mentre dai primi tre link il nome della pagina viene prelevato regolarmente con uno dei primi due pattern_1, dal quarto link assieme al nome della pagina viene prelevata anche la Querystring che l'accompagna.
    codice:
    funzioni/funz001.htm
    funzioni/funz001.htm
    http://www.miosito.it
    inf_record.php?settore=lab_mysql&amp;choice=info&amp;pref=inf&amp;file=inf_record
    C'è un modo, aggiustando uno dei due pattern_1, far sì che la stessa espressione regolare si comporti bene anche col link più complesso?

    Spero che il problema si possa risolvere.
    Grazie per l'interessamento.

    PS: l'estrazione la eseguo con questa istruzione:
    preg_match($pattern_1,$stringa4,$page4);
    e poi la leggo con
    echo $page4[1] . "<hr />\n";
    Ultima modifica di micdas; 23-09-2014 a 22:26

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Prova questo pattern

    href="(.*?)[\?"]

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Prova questo pattern

    href="(.*?)[\?"]
    Codice PHP:
    $pattern_1 '(href="(.*?)[\?"])';
    preg_match($pattern_1,$stringa4,$page4);
    echo 
    htmlentities($page4[1]) . "<hr />\n"
    Perfetto, funziona.
    Sei un grande, Alhazred, grazie

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.