Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542

    Evidenziare le occorrenze in un testo

    Ciao a tutti,
    ho questa semplice funzione per evidenziare le occorrenze in un testo e vorrei migliorarla.

    Attualmente utilizzo str_ireplace per effettuare le sostituzioni.
    Come sapete str_ireplace effettua tutte le sostituzioni in un solo colpo ed è case insensitive cosa che per me va bene.

    Vorrei però rispettare la modalità di scrittura del testo originale (maiuscole e minuscole).
    Per spiegarmi meglio:
    se nel testo originale ho la parola 'Casa' e cerco 'casa' oppure 'CASA' vorrei inserire i tag per evidenziare la parola 'Casa', così com'è nel testo originale.

    Prima di fare a manina vorrei il vostro aiuto per risolvere utilizzando solo funzioni di PHP.
    E' possibile?

    Questa è la funzione:

    Codice PHP:
    function evidenziaStringhe($testo$stringa1) {

        if (
    trim($stringa1 != '') and strlen($stringa1)>)
        {
            
    $testo str_ireplace($stringa1'[b]<span style="background-color: #CCFF99">'.$stringa1.'</span>[/b]'$testo);
        }

        return 
    $testo

    Grazie 1000
    Guidino

  2. #2
    codice:
    $testo = preg_replace("/($stringa1)/i", '<span style="background-color: #CCFF99">'.$1.'</span>', $testo);
    non testata

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542

    str_ireplace()

    Grazie per la risposta,
    ho provato ma non funziona o meglio funziona esattamente come str_ireplace() perchè l'espressione ("/($stringa1)/i", effettua la sostituzione in tutto il testo ma non rispetta le maiuscole/minuscole del testo originale.

    Conosci quali sono i parametri da includere nell'espressione regolare per dire alla funzione preg_replace() di lasciare inalterate le maiuscole/minuscole?

    p.s.
    nel tua indicazione avevi scritto per sbaglio $1 al posto di $stringa1, almeno così ho inteso e la prova l'ho fatta su:

    $testo = preg_replace("/($stringa1)/i", '<span style="background-color: #CCFF99">'.$stringa1.'</span>', $testo);


    Grazie
    Guidino

  4. #4
    No, non avevo scritto $1 per sbaglio, pero' avevo commesso un errore stupido.
    Versione funzionante:

    Codice PHP:
    $testo "frase che contiene la PaRoLa da cercare";
    $stringa "parola";

    $testo preg_replace("/($stringa)/i"'[b]<span style="background-color: #CCFF99">$1</span>[/b]'$testo);

    echo 
    $testo

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    542
    Grazie,
    funziona perfettamente.

    ... ma le necessità sono varie e non vorrei disturbare ogni volta postando nel forum.
    Hai qualche link che spiega come imparare a creare le espressioni regolari?
    Guidino

  6. #6

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.