Убрать комментарии в html

Удалить комментарии из исходного кода HTML

Я знаю, как получить исходный HTML-код с помощью cUrl, но я хочу удалить комментарии в HTML-документе (я имею в виду, что между ). Кроме того, если я могу взять только BODY HTML-документа. благодарю вас.

6 ответов

$html = '
some content
'; // put your cURL result here $dom = new DOMDocument; $dom->loadHtml($html); $xpath = new DOMXPath($dom); foreach ($xpath->query('//comment()') as $comment) < $comment->parentNode->removeChild($comment); > $body = $xpath->query('//body')->item(0); $newHtml = $body instanceof DOMNode ? $dom->saveXml($body) : 'something failed'; var_dump($newHtml);

Regex решил эту проблему для меня следующим образом:

function remove_html_comments($html = '') < return preg_replace('//', '', $html); > 

Если в cUrl нет такой возможности (и я подозреваю, что нет, но раньше я ошибался), то вы можете, по крайней мере, проанализировать полученный HTML-код для вашего сердца с помощью анализатора PHP DOM.

Это, вероятно, будет вашим лучшим выбором в долгосрочной перспективе с точки зрения конфигурации и поддержки.

Я бы передал это в Sed для регулярного выражения, что-то вроде

curl http://yoururl.com/test.html | sed -i "s///g" | sed "s/.?(.?).?/\1/" 

Регулярные выражения могут быть не точными, но вы поняли.

У меня возникли проблемы с изменением DOMNodeList в цикле foreach, который ушел, я повторил назад по списку. По этой причине я бы не рекомендовал foreach цикл, как в принятом ответе. Вместо этого используйте for цикл вроде этого:

$dom = new DOMDocument(); $dom->loadHTML($html); $xpath = new DOMXPath($dom); for ($els = $xpath->query('//comment()'), $i = $els->length - 1; $i >= 0; $i--) < $els->item($i)->parentNode->removeChild($els->item($i)); > 

Источник

Как закомментировать строку в HTML: примеры комментирования кода

Lorem ipsum dolor

Как закомментир о вать текстовую строку или часть кода в html

Главная суть комментирования абсолютно в любом языке программирования — все что закомментировано «не читается» браузером, компилятором или интерпретатором. То есть, в нашем случае, все что мы хотим закомментировать в html , не будет «читаться» браузером и, соответственно, не будет выводит ь ся на веб-страницу.

Читайте также:  Unit testing example in java

В html нет специального тега или способа создавать отдельно однострочный или многострочный комментарий, как есть в других языках программирования. В html один инструмент на все случаи жизни и неважно нужно вам закомментировать одну строку, одно слово или целый блок кода.

Стандартный способ закомментировать в html

Стандартный способ закомментировать строку или блок кода html осуществляется при помощи определенного набора символов. Шаблон комментария выглядит так:

То ест ь абсолютно все, что будет прописано внутри этой конструкции , и будет считаться комментарием в html и не будет показываться в окне обозревателя.

При написании такой конструкции с целью временного «отключения» какой-то части кода нужно быть очень внимательными, чтобы случайно не зацепить комментарием какой-нибудь работающий и нужный тег вашего кода.

Также нужно избегать ситуации двойного комментирования, когда внутри одного комментария пишут еще один. В этом случае комментарии будут работать следующим образом : как только обозреватель «встретит» первый набор символов для закрывания комментария, действие комментария заканчивается и все, что будет написано после него, будет доступно на веб-странице, в том числе и второй набор символов для закрывания комментария.

В былую молодость html у комментариев был свой собственный тег . Современные версии браузеров его не поддерживают, лишь Internet Explorer 8.0 и более ранних версий и то, этот тег применяется только внутри тега «body».

Нестандартный способ закомментировать строку или блок кода html

Данный способ, как и тег «comment» , практически не используется, однако знать его для общего ознакомления надо. Вдруг когда-нибудь встретите закомментированный таким способом код — хоть будете знать, что это за конструкции.

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

Читайте также:  Error no main class specified kotlin

Получается, что нестандартным способом можно закомме н тировать строку или блок кода, если поместить нужный код внутри этих тегов и закомментировать его их способами. Конструкция будет следующей:

/*

Эта строчка будет закомментирована

*/

Заключение

Используйте стандартный способ закомментировать строку или блок кода в html — так надежнее и правильнее. Неважно для чего вам комментарий на страницы — важно , чтобы он был правильно оформлен и не приносил вреда.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

RegExp, чтобы убрать комментарии HTML

Ищете регулярную регулярную последовательность совпадений и заменяет (желательно PHP, но не имеет значения), чтобы изменить это (начало и конец — это просто случайный текст, который необходимо сохранить). В:

fkdshfks khh fdsfsk 
CODE: AutoIt
msgbox
fdsfdskh
fkdshfks khh fdsfsk 
CODE: AutoIt
msgbox
fdsfdskh

11 ответов

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

@James Джеймс Брукс, единственная разница между IN и OUT в том, что IN имеет комментарии, а OUT нет. Итак, что еще вы хотите, кроме как зачистить комментарии?

@EugenMihailescu хорошо, когда вы подходите прямо к этому, использование регулярных выражений на нерегулярном языке в любом случае является ошибкой.

Этот PHP-код удалит все теги комментариев html из строки $html.

Подробности о модификаторах: U делает его Ungreedy и поэтому идет только к первому близкому комментарию. я делаю это без учета регистра (не уверен, зачем это нужно здесь), это означает, что переводы строки разрешены и внутри комментариев.

+1 для Ungreedy, который вызывается отдельно от регулярного выражения, что облегчает понимание / чтение.

Не забывайте учитывать условные комментарии, так как

удалит их. Вместо этого попробуйте:

Это также приведет к устранению условных комментариев с открытым уровнем.

Это не приведет к удалению скрытых или доступных вниз уровней.

Он соответствует html-комментариям следующим образом:

и , что наиболее важно, оно соответствует комментариям, подобным этому (другое выражение, показанное другими, не охватывает эту ситуацию):

Хотя синтаксически тот, что приведен ниже, является комментарием html, ваш браузер может каким-то образом разбирать его и, следовательно, может иметь особое значение. Удаление таких строк может привести к повреждению вашего кода.

Отличное регулярное выражение здесь. Тем не менее, может быть более полезным перейти к следующему, чтобы комментарий был полностью удален. (?=)

Источник

Курсы javascript

Приветствую !
Подскажите скрипт что-бы простейшим способом удалить символы комментариев.

После загрузки документа, на выходе должны получить:

То есть «delete» будет означать, что эти комментарии нужно удалить из кода. Остальные не трогать.
Ну, или как-то по другому их определять

в ie так не получится. в хроме можно было читать комментарии. читать в том смысле, чтобы парсить можно из документа, а так вряд-ли сами блоки встанут на место. надо делать финт ушами )

       -->    

Comment 0

Text 1

Text 2

Text 3

-->

Comment 1

Text 4

Text 5

Text 6

-->

Спасибо, но на странице jquery по ряду причин нельзя. Нужен чистый Javascript.

Смысл сего извращения, спрятать от Яндекса некоторые блоки текста.
Новые алгоритмы Яндекса настолько жестоки, что накладывают санкции на страницы за якобы «не нужный посетителю текст». Так как Яндекс еще и не может выполнять Java, то пришла идея комментировать текстовые блоки, которые он «не будет видеть», а пользователь и Гугл который выполняет Java, «увидят» реальный текст

Подсказали решение задачи другим методом — с использованием JavaScript escape

Оказывается Гугл прекрасно поймет и выполнит такой код, и в индекс поместит нормальный текст.
Яндекс в силу своей тупости, не поймет, для него там текста не будет

Конечно, c удалением комментариев, было-бы лучшее решение, так как не нужно кодировать, но увы, не получилось

Источник

Оцените статью