For example, there is a string
<div>text parent <span>text span</span></div><div>text 1</div><div>text2</div> I need to get an array of 3 elements
['<div>text parent <span>text span</span></div>','<div>text 1</div>','<div>text2</div>'] For example, there is a string
<div>text parent <span>text span</span></div><div>text 1</div><div>text2</div> I need to get an array of 3 elements
['<div>text parent <span>text span</span></div>','<div>text 1</div>','<div>text2</div>'] var html = new DOMParser().parseFromString( '<div>text parent <span>text span</span></div><div>text 1</div><div>text2</div>', "text/html"); var divs = html.body.querySelectorAll('div'); var tags = []; for(let i = 0; i < divs.length; i++){ tags.push(divs[i].outerHTML); } alert(JSON.stringify(tags)); Since this is not an AST, but a one-dimensional array, it is not possible to process nested tags.
Then something like this:
let str = '<div>text parent <span>text span</span></div><div>text 1</div><div>text2</div>'; function parse(str){ let offset = 0, result = []; // Ищем очередной <div> while((offset = str.indexOf('<div>', offset)) !== -1){ let closed; // Ищем ближайщий закрывающий тэг // Если его нет - кидаем ошибку if ((closed = str.indexOf('</div>', offset)) === -1) throw new Error('Unclosed tag!'); closed += 6; // Вырезаем часть с результатом result.push(str.substring(offset, closed)); // Меняем отступ для нового поиска offset = closed; } return result; } console.info(parse(str)); Source: https://ru.stackoverflow.com/questions/567600/
All Articles