Visualizzazione risultati 1 fino 9 di 9

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

  1. #1
    Guest

    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?

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

    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
    Guest

    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? :)

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

    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
    Guest

    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>

  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
  •