Vous pourriez essayer ce qui suit. Je ne pense pas que vous avez même une expression régulière:
<cfset html_content = replaceNoCase(request.oEntry.getHTMLStuff(), "<p class=""subsubhead""", "<p id=""#id#"" class=""subsubhead""", "All" />
<cfoutput>#html_content#</cfoutput>
Notez les doubles guillemets doubles à l'intérieur des guillemets doubles de sorte que les chaînes ne se cassent pas! La valeur finale du paramètre replaceNoCase()
indique à CF de remplacer toutes les occurrences. Omettez la partie <p
si vous cherchez à remplacer les valeurs de cette classe par d'autres balises.Il pourrait être souhaitable dans ce cas d'utiliser une expression rationnelle pour éviter de remplacer tout contenu (pas une grande chance d'un match, mais on ne sait jamais):
<cfset html_content = REReplaceNoCase(request.oEntry.getHTMLStuff(), "(<[^>]+?)(class=\""subsubhead\"")([^>]*>)", "\1 id=""#id#"" \2 \3", "All") />
Cela ne remplacera le class="subsubhead"
avec id="#id#" class="subsubhead"
(où #id#
est la valeur d'une variable CF) dans les balises HTML.
Espérons que cela aide. C'est le genre de chose que ColdFusion fait rapidement et facilement.
MISE À JOUR: Vous n'avez pas mentionné dans l'OP si la valeur de x
doit être incrémentée à chaque correspondance; si tel est le cas, alors vous aurez envie d'utiliser REFindNoCase()
avec returnsubexpressions=true
(en utilisant la même regex comme ci-dessus), en boucle puis à travers les len
et pos
tableaux:
<cfset content_match = REFindNoCase(request.oEntry.getHTMLStuff(), "(<[^>]+?)(class=\""subsubhead\"")([^>]*>)", 1, true) />
<cfloop from="1" to="#arrayLen(content_match.pos)#" index="ii">
<!--- Do the replace in here --->
<cfset temp = mid(content_match, pos[ii], len[ii]) />
<cfset temp = replaceNoCase(temp, "class=""subsubhead""", "id=""#ii#"" class=""subsubhead""") />
<cfset content_match = removeChars(content_match, pos[ii], len[ii]) />
<cfset content_match = insert(temp, content_match, pos[ii]) />
</cfloop>
Il pourrait y avoir un arrêt par une erreur ci-dessus (je n'ai pas testé), mais je pense que c'est généralement sain.
Il semble que vous générez déjà le code HTML à partir d'une requête ColdFusion. Y a-t-il une chance que vous puissiez poster du code CF ou expliquer comment le code HTML est généré? –
Voulez-vous que SQL, jQuery ou ColdFusion fasse le travail? Voulez-vous réellement changer les données qui sont stockées ou juste le changer une fois qu'il atteint le navigateur? –
HTML provient de la base de données où quelqu'un l'a copié et collé dans une zone de texte à partir d'un mot. Evik, je pense que ColdFusion va devoir faire le travail puisque l'identifiant de sous-titre est déjà stocké dans variables.qsubheading plutôt que dans les entrées sur la page – Jarede