Espressione regolare del limite di parole a less che non sia presente un tag HTML interno

Ho un'espressione regolare usando i limiti delle parole che funziona molto bene …

~\b('.$value.')\b~i

… tranne per il fatto che corrisponde al text all'interno dei tag HTML (ad esempio title="This is blue!" ). È un problema perché sto facendo la sostituzione del text su qualsiasi cosa corrisponda alla regex, quindi i tooltip vengono visualizzati usando quei tag title . Quindi, come puoi immaginare, sostituisce il text all'interno del titolo e rompe l'HTML del suggerimento. Ad esempio, cosa dovrebbe essere:

<span class="blue" title="This is blue!">Aqua</span>

… finisce per diventare …

    <span class="blue" title="This is <span class=" blue"="">Royal Blue</span>"&gt;Aqua</span>

    Il mio uso di strip_tags non ha risolto il problema; Penso che ciò di cui ho bisogno sia un'espressione regolare migliore che semplicemente non abbinerà il contenuto che termina in blue"> (" blu "in questo caso è un segnaposto per qualsiasi altro colore dell'arrays che sto confrontando con).

    Qualcuno può aggiungere ciò di cui ho bisogno all'espressione regolare? O hai una soluzione migliore?

    Le sostituzioni di Regex sembrano spesso la soluzione, ma possono avere molti effetti collaterali malati e non ottengono realmente ciò che si desidera. Cerca invece nei templates DOMDocument (come hanno suggerito alcuni commentatori).

    Ma se insisti a usare regex, ecco un buon post su SO. Usa due passaggi per realizzare ciò che vuoi.

    Davey, riesumando questa domanda perché, a parte la soluzione Dom, esiste una soluzione regex migliore di quella menzionata finora. È una soluzione semplice che richiede un singolo passaggio.

    La soluzione generale è

     <[^>]*>(*SKIP)(*F)|blue 

    Ecco una demo

    Qualsiasi contenuto all'interno dei tag <> viene semplicemente saltato. Il contenuto tra i tag, ad esempio il blu, corrisponde a quello che soddisfa le tue esigenze.

    Nell'espressione, sostituisci "blu" per ciò che ti piace.

    Riferimento

    1. Come abbinare il model tranne nelle situazioni s1, s2, s3
    2. Come abbinare un model a less che …