Есть несколько способов удалить HTML tags
из NSString
в Cocoa
.Удалить HTML-теги из NSString на iPhone
One way предназначен для рендеринга строки в NSAttributedString
, а затем для получения выделенного текста.
Another way должен использовать NSXMLDocument's
- objectByApplyingXSLTString
способ применить трансформацию XSLT
, которая делает это.
К сожалению, iPhone не поддерживает NSAttributedString
или NSXMLDocument
. Слишком много краевых случаев и неправильных документов HTML
для меня, чтобы чувствовать себя комфортно с помощью регулярного выражения или NSScanner
. У кого-нибудь есть решение?
Одно из предложений заключалось в том, чтобы просто искать символы открытия и закрытия тегов, этот метод не будет работать, за исключением очень простых случаев.
Например, эти случаи (из главы Perl Cookbook на ту же тему) будет разорвать этот метод:
<IMG SRC = "foo.gif" ALT = "A > B">
<!-- <A comment> -->
<script>if (a<b && a>c)</script>
<![INCLUDE CDATA [ >>>>>>>>>>>> ]]>
Вы можете добавить немного логики, чтобы принять цитаты и апостроф во внимание ... CDATA займет немного больше работы, но вся суть в том, что HTML-теги неизвестные могут быть проигнорированы анализатор; если вы рассматриваете ВСЕ теги как неизвестные, тогда вы должны просто получить необработанный текст. – 2008-11-10 17:44:33
Я хотел бы прокомментировать, что хорошее (но основное) регулярное выражение, безусловно, не сломается на ваших примерах. Конечно, нет, если вы можете гарантировать хорошо сформированный XHTML. Я знаю, что вы сказали, что не можете, но мне интересно, почему ;-) – Jake 2009-10-09 12:54:24
Существует ** Хороший ответ ** на этот вопрос. [Сгладить HTML с помощью Objective c] (http://rudis.net/content/2009/01/21/flatten-html-content-ie-strip-tags-cocoaobjective-c) – vipintj 2010-07-09 09:12:37