Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    129

    Rimpiazzare parti di una catena

    Ciao,

    Ho un problema per sostituire parti di una catena.
    Nella catena che ho ci sono etichette HTML e ho provato in vari modi, però no riesco a risolvere.
    Le etichette HTML devono rimanere.

    Qui l'esempio:
    < p class="txt">#mario oggi va in spaggia<img src="img.jpg"/> con #luca e #sara</p>

    Quello che voglio ottenere è rimpiazzare solo i nomi che iniziano con #... esempio:
    #mario -> <a href="link.php">#mario</a>
    #luca > <a href="link.php">#luca </a>
    #sara -> <a href="link.php">#sara</a>

    Ho provato con un array, $array = split(' ',$testo);, pero controllando se ogni parola inizia per # y modificarle con un ciclo for non è possibile giá che a volte le parole non sono separate con spazi, esempio: ">#augusto".

    Come potrei risolvere?!?!
    Grazie

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Ti servono le espressioni regolari

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    se ho capito bene, ti serve una cosa tipo questa
    Codice PHP:
    <?php
    $txt 
    '< p class="txt">#mario oggi va in spaggia<img src="img.jpg"/> con #luca e #sara</p>';
    $pattern '|#([\w]+)|';

    preg_match_all($pattern$txt$matches);

    foreach(
    $matches[0] as $o) {
        
    $txt preg_replace("|$o|""<a href=\"link.php\">$o</a>"$txt);
    }

    echo 
    $txt "\n";
    ?>

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    129
    Salve,
    si alla fine ho usato questa espessione e funciona:

    Codice PHP:
    $txt '<p class="txt">#mario oggi va in spaggia<img src="img.jpg"/> con #luca e #sara</p>';
    $txt preg_replace('/#([a-zA-Z0-9_-]+)/''<a href="enlace.php?e=$1">#$1</a>'$txt); 
    Ho solo un problema... se nel string ho un link, e dentro del link ho un un #, non voglio que lo converte.
    Esempio:
    $txt = '<p class="txt"><a href='http://www.website.it/index.php#casacom?es=ot'>http://www.website.it/index.php#casacom?es=ot</a> visita questo #link</p>';

    Ci sto provando senza risultati... che posso fare?
    Grazie
    Ultima modifica di dariocena; 18-07-2014 a 12:21

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non hai la possibilità di mettere {luca} invece di #luca ?
    Scegliere caratteri che non sono usati da HTML rende le cose più facili.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Aggiungi uno spazio all'espressione regolare
    Oppure usa un altro carattere al posto del #

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.