У меня есть HTML основной текст, созданный в моей CMS. У меня есть собственный метод выделения условий поиска в тексте, чтобы, когда пользователь переходит на страницу из результатов поиска, выделяются все вхождения этого условия поиска. У меня эта настройка нечувствительна к регистру, поэтому соответствующий текст будет выделен независимо от заглавных букв, а результат сохранит исходное использование заглавных букв:
var regex = new Regex(searchTerm, RegexOptions.IgnoreCase);
var evaluator = new MatchEvaluator(match => Evaluators.Wrap(match, textToFormat, "<span class='highlight'>{0}</span>"));
var highlightedText = regex.Replace(textToFormat, evaluator);
Это приводит к следующему (скажем, у пользователя искали "текст"):
"This is some text!" -> "This is some <span class='highlight'>text</span>!"
Однако я обнаружил проблему, которая возникает, когда тело HTML содержит теги изображения, а URL-адрес изображения содержит поисковый запрос. Это приводит к нарушению изображений на странице.
"This is some text: <img src='/images/text.png'/>" -> "This is some <span class='highlight'>text</span>: <img src='/images/<span class='highlight'>text</span>.png'/>"
Есть ли способ, которым я могу игнорировать текст внутри тега изображения, сохраняя при этом весь остальной текст и сохраняя заглавные буквы?
Это НЕ то же самое, что C# Regex заменить в строке только за пределами тегов , потому что в тегах <p>
и <span>
есть много текста, который мне НЕОБХОДИМО заменить. Мне нужно только игнорировать текст внутри тегов <img>
и <a>
.