Очистка html


WYSIWYG — это неотъемлемая чаcть сайтов с редактируемым контентом. Но его недостатком является «фарширование» HTML-тегов разными атрибутами. В этой статье хочю расказать о том, как можно удалить «ненужные» атрибуты в большом количестве записей.

В моём случае нужно было перенести контент с Joomla на WordPress. Делалось это с помощью CakePHP. Контент необходимых статей Jooml-ы сохранялся как посты WP. Но таблицы нового сайта не соответствовали дизайну, потому что все имели атрибуты: border, width, cellspacing, cellpadding, align, class. Нужно было от этого всего избавится. Мне предложили два варианта:

  1. Использовать регулярные выражения
  2. Взять дамп базы и пройтись автозаменой

Оба варианта не очень подходили т.к. атрибуты прописаны в разном порядке и наборе.

В решении проблемы помог PHP DOMDocument. Вот код принципа работы:

 $dom = new DOMDocument;  $dom->loadHTML($html); // берём необходимый HTML   $xpath = new DOMXPath($dom); //инициируем XPath   $tags = $xpath->query('//tag'); //ищем необходимый тег  foreach ($tags as $tag) {  $tag->removeAttribute('attr'); //удаляем ненужный атрибут   }    // сохраняем новый HTML-код в переменную для дальнейшей работы  $new = $dom->saveHTML();    

Вот мой конечный код (использовался в цикле):

  $dom = new DOMDocument;  $dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));   $xpath = new DOMXPath($dom);  // del attributes from <table>  $tables = $xpath->query('//table');  foreach ($tables as $table) {  $table->removeAttribute('width');   $table->removeAttribute('cellspacing');   $table->removeAttribute('cellpadding');   $table->removeAttribute('border');  }    // del attr from <tr>  $rows = $xpath->query('//tr');  foreach ($rows as $row) {  $row->removeAttribute('align');  }    $newContent = $dom->saveHTML();  

Так что если нужно избавить от атрибутов в тегах постов/статтей — можно просто пройтись простеньким PHP-скриптом.

habr.com

Работа с блоком оформления

Работа элементов блока оформления зависит от типа выделения контента в рабочей области:

  • при текстовом выделении элементы из блока оформления добавляются к соответствующему фрагменту контента;
  • при мигающем курсоре в блоке оформления показываются все родительские элементы соответствующей области (повторное нажатие на родительский элемент в блоке оформления удаляет его, а прочие элементы добавляет или производит замену одного другим).

Другие операции

Вставка изображений производится копированием через буфер обмена или операцией перетаскивания (drag-n-drop). Файл изображения должен быть предварительно загружен на сайт.

Отменить или вернуть форматирование можно воспользовавшись клавиатурными сочетаниями CTRL+Z и CTRL+Y соответственно.

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

Кнопка «Очистить HTML» очищает код от ненужных тегов и атрибутов, а также значений атрибута class, не имеющих представления в блоке оформления. Эта функция автоматически срабатывает после вставки контента из буфера (CTRL+V).

Кнопка «Типографить» расставляет символы экранной типографики согласно правилам автоматически определенного языка.

Управление «Реформатором»

Переключатель «Полный экран» переводит «Реформатор» в полноэкранный режим — окно с контентом разворачивается на всю область браузера.


Переключатель «Исходный HTML» позволяет просмотреть или отредактировать HTML-код.

Переключатель «Автоформатирование» включает или отключает автоматическое типографирование и очистку HTML.

www.artlebedev.ru

У меня нет времени, чтобы закончить это… может быть, кто-то может помочь. Этот javascript также удаляет точные повторяющиеся теги и запрещенные теги…

Есть несколько проблем/вещей, которые нужно сделать,
1) регенерированные теги должны быть закрыты
2) он удалит только тег, если имя тега и атрибуты идентичны другому в пределах этих дочерних узлов, поэтому его недостаточно «умный», чтобы удалить все ненужные теги.
3) он просмотрит разрешенные переменные CSS и извлечет ВСЕ эти значения из элемента, а затем напишет его на выходной HTML, например:

var allowed_css = ["color","font-size"]; <span style="font-size: 12px"><span style="color: #123123"> 

Будет переведено на:

<span style="color:#000000;font-size:12px;"> <!-- inherited colour from parent --> <span style="color:#123123;font-size:12px;"> <!-- inherited font-size from parent --> 

<html>  <head> <script type=.  

n print(out, stringCode, allowHTML) { out.innerHTML = allowHTML? stringCode : getHTMLCode(stringCode); } function getHTMLCode(stringCode) { return "<code>"+((stringCode).replace(/</g,"&lt;")).replace(/>/g,"&gt;")+"</code>"; } function getNodes(elem) { var output = ""; var nodesArr = new Array(elem.childNodes.length); for (var i=0; i<nodesArr.length; i++) { nodesArr[i] = new Array(); nodesArr[i].push(elem.childNodes[i]); getChildNodes(elem.childNodes[i], nodesArr[i]); nodesArr[i] = removeDuplicates(nodesArr[i]); output += nodesArr[i].join(""); } return output; } function removeDuplicates(arrayName) { var newArray = new Array(); label: for (var i=0; i<arrayName.length; i++) { for (var j=0; j<newArray.length; j++) { if(newArray[j]==arrayName[i]) continue label; } newArray[newArray.length] = arrayName[i]; } return newArray; } function getChildNodes(elemParent, nodesArr) { var children = elemParent.childNodes; for (var i=0; i<ch.

function tagNotAllowed(tagName) { var allowed = " "+allowed_tags.join(" ").toUpperCase()+" "; if (allowed.search(" "+tagName.toUpperCase()+" ") == -1) return true; else return false; } function getAttributes(elem) { var attributes = ""; for (var i=0; i<elem.attributes.length; i++) { var attrib = elem.attributes[i]; if (attrib.specified == true) { if (attrib.name == "style") { attributes += " style=""+getCSS(elem)+"""; } else { attributes += " "+attrib.name+"=""+attrib.value+"""; } } } return attributes } function getCSS(elem) { var style=""; if (elem.currentStyle) { for (var i=0; i<allowed_css.length; i++) { var styleProp = allowed_css[i]; style += styleProp+":"+elem.currentStyle[styleProp]+";"; } } else if (window.getComputedStyle) { for (var i=0; i<allowed_css.length; i++) { var styleProp = allowed_css[i]; style += styleProp+":"+document.defaultView.getComputedStyle(elem,null).getPropertyValue(styleProp)+";"; } } return style; } </script> .

span> </span> </span> </span> </span> </span> </span> <span style="color: #006400"> <span style="font-size: 16px"> <span style="color: #b22222"><b>Test</b></span> </span> </span> </span> </span> </strong> </p> <p>Second paragraph. <span style="color: #006400">This is a span</span></p> </div> <h3>HTML code:</h3> <div id="commentHTML"> </div> </div> <div style="float: left; width: 300px;"> <h2>Output</h2> <div id="output"> </div> <h3>HTML code:</h3> <div id="outputHTML"> </div> </div> <div style="float: left; width: 300px;"> <h2>Tasks</h2> <big> <ul> <li>Close Tags</li> <li>Ignore inherited CSS style in method getCSS(elem)</li> <li>Test with different input HTML</li> </ul> </big> </div> </body> </html>

qaru.site

Интернет-магазин стройматериалов, исполнительный директор. Заказывали верстку для интернет-магазина со сложными деталями. Магазин работает в обычной мобильной версиях. В процессе было сделано очень много,… Михаил Алексеевич Г. 10 ноября 2015, 21:55

Салон перманентного макияжа «Клео» Мне нужен был сайт для салона перманентного макияжа, чтобы клиенты могли записаться на консультацию в онлайне. Все было реализовано, включая дизайн, который я придумала… Савина Елена 14 октября 2015, 23:34

Верстка лендинга была выполнена в очень короткие сроки – т.к. проект у меня горел. Что поразило, скорость выполнения совершенно не сказалась на качестве. Сайт прекрасно выглядит во всех браузерах, меню,… Сергей 09 октября 2015, 19:03

Найти хорошего верстальщика очень сложно, и мы рады, что нам это удалось! Компания ArtLenk выполнила все на высоте – было сверстано несколько макетов в полном соответствии с ТЗ. Рекомендуем к сотрудничеству… Игорь 19 сентября 2015, 19:35


Идеальный результат был получен за счет того, что в команде ArtLenk мы нашли не только верстальщика, но и дизайнера. В результате была выполнена сложнейшая верстка со множеством дополнительных элементов.… Зубарев А.Н. 25 августа 2015, 19:02

Я программист и получил именно то, что заказывал. Все сделали точно, логично, можно сказать – безупречно. Можно в дальнейшем легко вносить изменения в код. Денис А 01 июля 2015, 20:22

До этого много с кем сотрудничали по верстке сайтов. В артленк мы нашли не только верстальщика-профи своего дела, но и JS программиста. В команде работают очень слажено, сроки соблюдаются, можно смело… Светлана 25 июня 2015, 19:00

Очень понравилась работа дизайнера в Artlenk. Мы были из таких клиентов, которые сами не до конца понимали, как должен выглядеть итоговый вариант. В процессе обсуждения с дизайнером родился дизайн нашего… Рената М. 05 июня 2015, 15:59

С дизайнером ArtLenk у нас почти сразу же возникло взаимопонимание. Уже первые предложения по дизайну были очень близки к тому, как мы видели наш сайт. Потом после небольших дополнений с нашей стороны… Ирина 19 мая 2015, 23:40


Полученный дизайн сайта очень порадовал – вроде бы и по шаблону, но с добавлением всех нужных нам элементов. Сайт сразу же приобрел индивидуальность, большое спасибо дизайнеру, что сумел так точно и красиво… Аркадий 11 мая 2015, 18:56

artlenk.ru

День добрый, дорогие читатели! Надеюсь у вас также хорошо, как и у нас — солнце светит, птички поют, тепло и наступило лето! У меня пока диссертация, поэтому последних месяца полтора я пишу только раз в неделю, физически не успеваю. Но не будем о грустном, перейдём к делу!

Когда-то давно я копался в интернете на тему поиска скрипта, очищающего код HTML от мусора, который, в частности, оставляет всеми нами «горячо любимый» в этом плане Microsoft Word. Ранее я использовал очистку кода посредством Adobe Dreamweaver, но у него было два недостатка:

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

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


Очистить HTML

В целом код для очистки не сложный, разобраться проблем не должно возникнуть. Однако есть одно маленькое но: скрипт работает корректно только в Internet Exploited Explorer. А скачать в архиве пример можно по ссылке:

 

 

 

И напоследок поделюсь одной из любимых широкоформатных обоин (1920×1200), валяющихся бесхозно у меня на компе. Наслаждайтесь летом, обоиной, и очищайте Ваш HTML код от всякого мусора! =)

001 thumb Очистка HTML кода от "мусора" (в частности создаваемого в Word)

JavaScript, вальпупер, очистка html, полезности

Понравилась статья или журнал? Подписывайся на продолжение!

shublog.ru

Подключена возможность использования регулярных выражений в ruby стиле. Вы можете найти интересующие вас вхождения последовательности символов и посмотреть что находится в переменных.

При использовании замены символов подключена функция gsub, которая произведет все замены в вашем тексте. Существует возможность задания флагов для регулярного выражения (mixs).

Для использования спец-символов в регулярном выражении необходимо поставить галочку в поле «Использовать регулярные выражения». При этом спец-символы допустимы только в поисковом выражении (для замены, возможно, будут добавлены в будущем).

Краткий обзор регулярных выражений для ruby:

^ — начало строки A — начало строки
$ — конец строки z — конец строки
. — один любой символ w — любая буква (+ знак подчеркивания) или цифра
[ ] — список входящих символов W — все что угодно, кроме w
[^ ] — любые символы вне этого списка d — цифра
? — 0 или 1 вхождение D — не цифра
* — 0 или сколько угодно вхождений s — любой пробельный симво
+ — 1 или более вхождений S — любой не пробельный символ
| — логическое или b — конец слова
{1, 5} — диапазон вхождений символа

Исходный текст:

текст содержащий простые цифры 123
и номера телефонов 111-11-11
а так же дробные значения 1/5

Ставим галочки «Использовать регулярные выражения» и «Найти все вхождения»

Вводим в поле для поиска регулярное выражение:

[/d-]+

Результат:

Найдено:
123
111-11-11
1/5

0en.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.