Сравнить строку с текстом html

У меня есть строка текста, которую я хочу сравнить с другой строкой с кодом HTML. Проблема в том, что текст, с которым мне нужно сравнить его в HTML-коде, находится в разных тегах. Кроме того, если строка существует в коде HTML, я хочу заключить ее в тег <mark>.

Вот пример, который я использую:

var html = "<h1>This is a heading</h1><div class="subtitle">and this is the subheading</div><p class="small">this is some example text</p>";
var lookup = "is a heading and this is the subheading this is some";
var finalHtml = ""; //will contain new html

//Need to do some comparison and then add a <mark> tag around found string.

console.log(finalHtml);
//This should print "<h1>This <mark>is a heading</h1><div class="subtitle">and this is the subheading</div><p class="small">this is some</mark> example text</p>"

Для этого я использую Javascript / Jquery.

Перед сравнением вам необходимо удалить HTML-код. тем не мение следует отметить, что желаемый результат недействителен, поскольку элемент <mark> нарушает элементы h1 и p.

Rory McCrossan 31.10.2018 13:14
Проверь это..stackoverflow.com/questions/22493700/…
Harry 31.10.2018 14:08

@Rory McCrossan - как я могу выделить этот текст с помощью HTML, не сделав его недействительным?

Matt9Atkins 31.10.2018 16:39

Кроме того, как только я удалю HTML и проведу сравнение, как я могу добавить выделение, а затем снова превратить его в HTML с исходными тегами и т. д.?

Matt9Atkins 31.10.2018 16:40

Вам нужно будет разделить mark между элементами, например: <h1>This <mark>is a heading</mark></h1><div class="subtitle"><mark>and this is the subheading</mark></div><p class="small"><mark>this is some</mark> example text</p>"

Rory McCrossan 31.10.2018 16:40
0
5
2 415
1

Ответы 1

Это поможет только поиск по вашему запросу в html (то есть без маркировки). Я удалил теги-пробелы, а затем проверил.

var html = '<h1>This is a heading</h1><div class="subtitle">and this is the subheading</div><p class="small">this is some example text</p>';
//remove html tags & spaces.
cleanHtml = html.replace(/<\/?[^>]+(>|$)/g, "").replace(/\s/g,"");
var lookup = "is a heading and this is the subheading this is some";
lookup = lookup.replace(/\s/g,'');
if(cleanText.includes(lookup)){
//match found
}

Другие вопросы по теме