конвертировать встроенные стили в CSS с помощью PHP - PullRequest
1 голос
/ 10 апреля 2011

Я создал класс, который может создавать множество различных типов штрих-кодов в нескольких форматах, таких как: - Любой формат изображения, GIF, JPG, PNG, SVG и т. Д. - сжатый JavaScript (JS) - HTML со встроенными стилями

Класс уже оптимизирован для уменьшения вывода штрих-кода настолько малым, насколько это возможно, путем «рисования» только черной информации.

Поскольку HTML-версия штрих-кода может быть такой огромной (хотя она уже оптимизирована), мне интересно, существует ли класс или функция, которая может преобразовывать встроенные стили в тег стиля, например:

Вывод (всего несколько строк):

<div id="mybarcode">
<div style="position:absolute;margin-left:26px;width:2px;height:128px;background:#000;"></div>
<div style="position:absolute;margin-left:34px;width:2px;height:128px;background:#000;"></div>
<div style="position:absolute;margin-left:36px;width:2px;height:48px;background:#000;"></div>
......
......

Вот что я хочу:

<style>
     #mybarcode div {position:absolute;width:2px;height:128px;background:#000;}
    </style> 
    ....
    ....

    <div id="mybarcode">
    <div style="margin-left:26px;"></div>
    <div style="margin-left:34px;"></div>
    <div style="margin-left:36px;height:48px;">
    ....
    ....

Если найден класс, который может делать противоположное тому, что я хочу, но это не мой случай. Кто-нибудь знает, есть ли класс, который может делать такие вещи с HTML? Также может быть полезно преобразовать другие страницы со встроенными стилями в HTML с внешним CSS.

Спасибо за ваш ответ! С уважением.

1 Ответ

1 голос
/ 10 апреля 2011

Не должно быть слишком сложно.

Общая схема алгоритма:

  • Посмотрите на каждый элемент и извлеките правила встроенного стиля
  • Идентифицирует стили, которые объединяют все элементы
  • Извлечение этих стилей в тег style в классе (т. Е. common)
  • Удалите избыточный встроенный стиль и добавьте класс common к элементам

Вы можете выполнять фактические манипуляции с элементами, используя Simple HTML Dom Parser . Сами правила CSS довольно легко разбирать, поэтому я бы использовал регулярные выражения. Особенно в вашем случае, поскольку вы написали код, который генерирует HTML, чтобы вы точно знали, с какими правилами CSS вы можете столкнуться.

...