Visualizzazione risultati 1 fino 9 di 9

Discussione: preg_replace ed eliminazione link <a href> con espressioni regolari

  1. #1
    L'avatar di animedia
    animedia non è connesso Utente giovane
    Data registrazione
    05-03-2008
    Messaggi
    30

    Predefinito preg_replace ed eliminazione link <a href> con espressioni regolari

    Buongiorno,

    Avrei bisogno di cancellare il contenuto del link dentro l'<a href='link'> per sostituirlo con quello di cui ho bisogno; però non conoscendo bene le espressioni regolari, mi potete dire quale pattern serve per cancellare il link?
    Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala.

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Non so cosa indenti per cancellare un link, e cosa centri un link con le espressioni regolari, cosa intendi di preciso?

    Sevenjeak
    Software developer and much more

  3. #3
    L'avatar di animedia
    animedia non è connesso Utente giovane
    Data registrazione
    05-03-2008
    Messaggi
    30

    Predefinito

    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    Non so cosa indenti per cancellare un link, e cosa centri un link con le espressioni regolari, cosa intendi di preciso?
    Faccio un esempio:

    Codice:
    <a href="http://www.google.it">Google</a>
    Devo sostituire il

    Codice:
    http://www.google.it
    con uno mio. Il problema è che quel link è dinamico, perciò a priori non lo conosco. So solo che è compreso dentro i doppi apici " ". Ecco mi servirebbe il pattern che sostituisca tutto quello che c'è tra il primo doppio apice e il secondo. Chiaro? :)
    Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala.

  4. #4
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Il link è dinamico, ma rispetto a cosa viene prodotto? potresti postare lo script che produce il link?
    Ultima modifica di sevenjeak : 09-03-2011 alle ore 17.05.37

    Sevenjeak
    Software developer and much more

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

    Predefinito

    Con una espressione regolare semplice, per esempio, puoi fare:
    Codice PHP:
    $testo = '<a href="http://www.google.it/">google</a> <a href="http://www.altervista.org/">altervista</a>';

    echo
    preg_replace('/<a href="(.+?)">(.+?)<\/a>/', '\\1', $testo); // stampa: http://www.google.it/ http://www.altervista.org/
    Ultima modifica di javascripter : 09-03-2011 alle ore 17.18.16

  6. #6
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Io avevo pensato, se devi catturare il link da un'altra pagina, a qualcosa del genere:
    Codice PHP:
    <?php
    $link
    = file_get_contents('http://localhost/sorgentedellink.php'); // * <a href="http://www.google.it/">Google</a> *

    $cerca = '#<a href="(.*)">(.*)</a>#si';
    $sostituisci = '<a href="http://www.altervista.it/">Altervista</a>';

    $link = preg_replace($cerca, $sostituisci, $link); // Cambia $cerca in $sostituisci da $link

    echo $link;
    ?>
    Ultima modifica di darkwolf : 09-03-2011 alle ore 17.41.19 Motivo: Rivisto e fixato :P

  7. #7
    L'avatar di animedia
    animedia non è connesso Utente giovane
    Data registrazione
    05-03-2008
    Messaggi
    30

    Predefinito

    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    Il link è dinamico, ma rispetto a cosa viene prodotto? potresti postare lo script che produce il link?
    E' un codice Wordpress, ma ciò che voglio fare va oltre WP e riguarda PHP sostanzialmente :)

    Codice PHP:
    $children = wp_list_pages('title_li=&child_of='.$cmnt.'&echo=0&depth=1&exclude=205,203,201');
    if ($children)
    {
    ?>
    <ul>
    <?php
    echo preg_replace(">".get_the_title(),"class='selected'>".get_the_title(),$children);
    ?>
    </ul>
    <?php
    }
    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Con una espressione regolare semplice, per esempio, puoi fare:
    Codice PHP:
    $testo = '<a href="http://www.google.it/">google</a> <a href="http://www.altervista.org/">altervista</a>';

    echo
    preg_replace('/<a href="(.+?)">(.+?)<\/a>/', '\\1', $testo); // stampa: http://www.google.it/ http://www.altervista.org/
    Non ma non deve cacciare i link XD devo sostituire quei link con altri link. Ciò che vorrei ottenere è da
    Codice:
    <a href="http://www.google.it/">Google</a>
    a

    Codice:
    <a href="http://www.altrolink.it/">Google</a>
    Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala.

  8. #8
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Se il link si ottiene da $children
    Codice PHP:

    <?php
    $cerca
    = '#<a href="(.*)">(.*)</a>#si';
    $sostituisci = '<a href="http://www.altervista.it/">Altervista</a>';
    $children = preg_replace($cerca, $sostituisci, $children); // Cambia $cerca in $sostituisci da $children

    echo preg_replace(">".get_the_title(),"class='selected'>".get_the_title(),$children);
    ?>
    Dovrebbe funzionare.
    Ultima modifica di darkwolf : 09-03-2011 alle ore 17.51.37

  9. #9
    Guest

    Predefinito

    Codice PHP:
    function strip_only_tags($str, $tags, $stripContent=false) {
    $content = '';
    if(!
    is_array($tags)) {
    $tags = (strpos($str, '>') !== false ? explode('>', str_replace('<', '', $tags)) : array($tags));
    if(
    end($tags) == '') array_pop($tags);
    }
    foreach(
    $tags as $tag) {
    if (
    $stripContent)
    $content = '(.+</'.$tag.'(>|\s[^>]*>)|)';
    $str = preg_replace('#</?'.$tag.'(>|\s[^>]*>)'.$content.'#is', '', $str);
    }
    return
    $str;
    }

    $html = '
    <strong><a href="page.html" class="xxx" id="aaa" onclick="funzione(); return false;">ythertyheythtyh</a></strong>
    <p>gethegthyh</p>
    <p>htyhythy<a href="simplelink.html">icici</a> hetrhtyh</p>'
    ;

    echo
    strip_only_tags($html, '<a>');

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
  •