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

    Applicare una funzione in una parte di stringa ben precisa..

    Salve ragazzi,

    ammesso che io abbia un qualcosa del genere:

    Codice PHP:
    $testo='Ciao questo è il [url="file"]Link[/url].'
    E' possibile applicare una funzione alla parte di stringa "Link", racchiusa nel tag <a>?

    Per essere più precisi dovrei applicare uno strip_tags, ma vi chiedo se è possibile applicare una funzione ad una parte ben precisa della stringa.

    Grazie come sempre

  2. #2
    Non esiste un modo generale per applicare una funzione solo su una parte di una stringa, il requisito e' troppo generico. Dipende da cosa devi fare.

  3. #3
    Grazie.
    In pratica ho già uno str_replace precedente che sostituisce alcune keyword con link (una sorta di Wiki), e questo mi crea conflitto perché devo in ogni caso trasformare l'interno di determinati tag A. Faccio un esempio.

    Ho questa variabile:
    Codice PHP:
    $testo='[url="file"]Questo è il link per il download del documento Fattura.[/url]'
    Poniamo il caso che "Fattura" sia una parola sensibile. La stringa quindi passa sotto lo str_replace e diventa:

    Codice PHP:
    $testo='[url="file"]Questo è il link per il download del documento <a href="fattura.html">Fattura.[/url]</a>'
    A questo punto io pero' ho bisogno di forzare il testo a tornare nel modo precedente, magari appunto applicando uno strip_tags della stringa all'interno

    Al momento non riesco a trovare un metodo per bloccare il primo str_replace perché si tratta di tutto testo inserito in un editor e inviato per essere processato per intero. (sempre come una sorta di Wiki)

  4. #4
    Non capisco bene cosa devi fare. Devi togliere tutti gli <a> annidati dentro qualche altro <a>? Devi annullare tutte le modifiche fatte dallo str_replace su cui non hai controllo? O tutt'altro?

  5. #5
    Esatto, annullare le modifiche fatte dal str_replace, oppure semplicemente eliminare tutti gli <a> annidati in altri <a> che posso identificare attraverso questa espressione:

    /(<a href="\/_file\/([^>]+)>)(.*?)(<\/a>)/is (spero sia giusta..!)

    In sostanza è come se volessi fare una cosa simile:

    Codice PHP:
        $testo=preg_replace('/([url="\file\/([^>]+)>)(.*?)(<\/a>)/is''<a href="]'.strip_tags($3).'[/url]'$testo); 
    Ma mi dà errore.

  6. #6
    Questo:
    codice:
    $testo = preg_replace('#<a[^>]+>([^<]+)</a>#', '$1', $testo);
    funziona col tuo esempio, ma non so se e' abbastanza generale. Ma non puoi in nessun modo accedere al codice che fa queste modifiche? O almeno salvare il valore di $testo prima che venga modificato?

  7. #7
    Ti ringrazio, ho applicato il codice e...le comiche!
    Riprendendo l'esempio di prima, questo codice risolve il problema precedente, ma fa anche un'altra cosa. In sostanza prende questa:
    Codice PHP:
    $testo='[url="file"]Questo è il link per il download del documento Fattura.[/url]'
    e la rende:

    Codice PHP:
    $testo='Questo è il link per il download del documento Fattura'
    ovvero elimina i tag <A> che all'interno non hanno tag annidati. (ovvero quelli che dovrebbero essere lasciati intatti)
    Io ti ringrazio, ma il mio evidentemente è un modo di ragionare sbagliato a monte.

    Purtroppo si tratta di un simil-Wiki dove mi hanno chiesto di evidenziare determinate parole rendendole link. Loro non fanno altro che inserire testo in un editor WYSIWYG (si tratta di un FCKeditor) e capita che debbano inserire stesso da lì altri link. Dato che l'editor mi passa il testo sottoforma di HTML, nel database salvo questi link già con il tag <A>.

    Se in questi collegamenti compare una delle parole chiave, allora in visualizzazione lo script che sostituisce quest'ultime purtroppo annida i tag <A>, e non so come evitarlo.

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.