Bueno, buscando un poco más y usando un editor /testeador de Regex online, haciendo prueba/error, me ha salido que con el siguiente trozo:
Código PHP:
|b([0-9a-zA-Z]+)B($array_cadena[$i]+)B([0-9a-zA-Z]+b)
se resaltaría toda cadena contenida en otra, es decir, si seguimos con el ejemplo de buscar "marca", ya se resaltarían también palabras que la contienen sin que esté al inicio o al final, es decir, en casos como "co
marcas", des
marcadas
Por tanto el patrón ahora quedaría:
Código PHP:
array_push($patron, "/\b($array_cadena[$i])+\b|\b([des|il|in|im|ir|un|non]+)\B($array_cadena[$i]+\b)|\b($array_cadena[$i]+)\B([ed|er|ing|s|es|ful|less|dom|ship|ness|hood|ty|ance|ment|ly|ally|fuly|est|]+\b)|\b([0-9a-zA-Z]+)\B($array_cadena[$i]+)\B([0-9a-zA-Z]+\b)/i");
No obstante, ahora se me plantea otro problema: ¿cómo excluir algo del patrón? Según parece el carácter negador de las expresiones regulares el ^. Pero no llego aplicarlo para que me dé el resultado deseado.
Volvamos al planteamiento
Yo tengo un texto dónde busco cierta cadena (de una o más palabras o letras sueltas)
Toda coincidencia la voy a resaltar con una etiqueta de estilo que se podría llamar <remarcarTxt>...</remarcarTxt>
Si el texto es:
"la marca de la clase desmaRCA o marcadas y mas MARCAdas o desmarcadas o coMARcAles"
Y la cadena a buscar es:
"marca-de-y-a"
En el texto, se resaltaran coincidencias como marca, de, ... desmaRCA.
Pero llega un momento en el que también se me formateara el propio nombre de la etiqueta usada para dar el estilo para destacar la palabra buscada, rompiendo así dicha etiqueta.
Entonces, ¿cómo hace para que el patrón deje de buscar en todo bloque que sea?:
<remarcarTxt>cualquier_contenido_formateado</remarcarTxt>
A ver si alguien me da una idea para conseguirlo.