2013-11-08 2 views
-2

Какой самый быстрый (по производительности) способ стягивания строк из тегов, большинство решений, которые я пробовал, которые используют regexp, не приводят к правильным значениям для тегов внутри атрибутов (да, я знаю, что это неправильно), например, тестовый пример:Стрип-теги (с тегами внутри атрибутов и вложенными тегами) с использованием javascript

var str = "<div data-content='yo! press this: <br/> <button type=\"button\"><i class=\"glyphicon glyphicon-disk\"></i> Save</button>' data-title='<div>this one for tooltips <div>seriously</div></div>'> this is the real content<div> with another nested</div></div>" 

, которые должны в результате:

this is the real content with another nested 
+2

Именно поэтому [THE PONY HE COMES] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454). –

+1

Как вы можете ожидать, что какое-либо регулярное выражение будет работать правильно с неправильным вводом (имеет синтаксические ошибки)? Значения ваших атрибутов заключены в '' ', и они также состоят из' ''. – matewka

+0

@matewka мой плохой, забыл изменить этот вопрос для этого вопроса. – Kokizzu

ответ

3

Я думаю, с помощью InnerText должно быть довольно быстро:

var str = "<div data-content='yo! press this: <br/> <button type='button'><i class=\"glyphicon glyphicon-disk\"></i></button>' data-title='<div>this one for tooltips</div>'> this is the real content<div> with another nested</div></div>"; 
var el = document.createElement('div'); 
el.innerHTML = str; 
var text = el.textContent || el.innerText; 
alert(text); 
+2

+1, но имейте в виду, что это не полностью кросс-браузер. Вы должны использовать' el.textContent || el.innerText'. –

+0

@NiettheDarkAbsol Спасибо, обновил ответ – sroes