and tags.
func replaceOutsideCode(html, old, replacement string) string {
var result strings.Builder
i := 0
for i < len(html) {
// Check if we're entering a code or pre block
if i < len(html)-1 && html[i] == '<' {
lower := strings.ToLower(html[i:])
if strings.HasPrefix(lower, " 0 && isWordChar(html[i-1])
after := i+len(old) < len(html) && isWordChar(html[i+len(old)])
if !before && !after {
result.WriteString(replacement)
i += len(old)
continue
}
}
result.WriteByte(html[i])
i++
}
return result.String()
}
func isWordChar(b byte) bool {
return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || (b >= '0' && b <= '9') || b == '_'
}