Выделите фрагмент кода HTML с соответствующим текстом

Мне нужно найти текст в html и выделить этот html без искажения самого html, который я выделяю.

Текст для замены:

Это текст 2. Это текст 3.

HTML:

This is text 1. <p> This is <span>Text 2</span>. This <div>is</div> text 3. </p> This is Text 4. 

Желаемый результат:

 This is text 1.<p> <strong class="highlight">This is <span>Text 2</span>. This <div>is</div> text 3. </strong> </p> This is Text 4. 

EDIT : Извините, если я не смог объяснить правильно.

Мне нужно выделить часть html-документа (в php или javascript), если строка, которую я ищу, соответствует тексту в HTML.

Но помните, что строка, которую я ищу, не идентична строке поиска, она может содержать некоторый дополнительный HTML.

Например, если я ищу эту строку « Это текст », ее следует сопоставить с «This is text.», «<Anyhtmltag> This </ anyhtmltag> – это текст.», «Этот <anyhtmltag> есть </ anyhtmltag> text. "," Этот <anyhtmltag> – это текст </ anyhtmltag>. " и так далее.

Related of "Выделите фрагмент кода HTML с соответствующим текстом"

Вы должны быть более конкретными, если вы хотите достичь этого с помощью серверной части (например, с помощью PHP и возврата в браузер кода HTML, который уже содержит выделенный вывод) или на стороне клиента (например, с помощью jQuery, чтобы найти и выделить что-то в HTML, возвращаемом сервером)?

Мне кажется, что вы просто задали вопрос, не делая ничего (например, поиск в сети), так как поиск правильного решения для jQuery (на стороне клиента) занял меня около десяти секунд! И три наиболее важных результата поиска были на самой документации StackExchange и jQuery.

Найти текст с помощью jQuery?

Найти текстовую строку с помощью jQuery?

Описание функции jQuery .wrap ()

Вот пример в очень кратком:

 <script> $('div:contains("This is <span>Text 2</span>. This <div>is</div> text 3")')wrap("<strong class="highlight"></strong>"); </script> 

Он обычно находит, что вы хотите найти и обернуть его тем, что вы хотите, чтобы оно было обернуто.

Это работает, когда текст, который вы хотите найти, находится внутри некоторого div, поэтому я использовал $('div:contains . Если вы хотите искать целую страницу, вы можете использовать $('*:contains вместо этого $('*:contains .

Это пример для выделения jQuery и на стороне клиента. Для версии PHP (на стороне сервера) выполните небольшой поиск в Google или StackOverflow, и вы наверняка найдете много примеров.

EDIT : Что касается вашего обновленного вопроса. Если вы используете текстовое поле для размещения там, что вы хотите найти, вы можете, конечно, использовать что-то вроде этого:

 <script> $("#mysearchbox").change( { $('div:contains($("#mysearchbox")').wrap("<strong class="highlight"></strong>"); }); </script> 

и определите окно поиска в другом месте, например, например:

 <input id="mysearchbox"></input> 

Таким образом, вы присоединяете событие onChange к своему окну поиска, которое будет onChange в любое время, когда вы напечатаете что-либо для него, и которое должно найти (и выделить) все, что вы ввели. Обратите внимание, что эти примеры взяты из рук (из памяти). У меня нет доступа к jQuery, откуда я пишу, поэтому я не могу проверить, нет ли ошибок, в том, что я только что написал. Тебе нужно проверить это самостоятельно.

С помощью JQuery вы можете добавлять классы к таким элементам …

HTML:

 <p id='myParagraph'>I need highlighting!</p> 

JQuery:

 $(document).ready(function(){ $('#myParagraph').addClass('highlight'); }); 

Я бы посмотрел, где вы можете разместить определенные HTML-элементы, так как не рекомендуется размещать такие вещи, как теги div в тегах p.

Надеюсь, это поможет!

ОБНОВЛЕНО

Хорошо, вы можете использовать JQuery для переноса тегов вокруг вашего кода.

Если вам нужно удалить теги, вы можете использовать функцию ленточных меток PHP – это может помочь в сравнении текстовой строки без форматирования HTML – очевидно, будет сделано до того, как страница загрузится в браузере. Не уверен в эквиваленте Javascript.

Обертка позволит вам перейти с вашего HTML на ваш желаемый результат. Тем не менее, я бы серьезно подумал о структуре вашего HTML, чтобы убедиться, что это лучшее, что может быть … может облегчить жизнь.