PHP библиотека для создания встроенного CSS из файлов или из тегов ?

#php #html #css

#php #HTML #css

Вопрос:

Я хотел бы библиотеку для создания встроенного CSS HTML из файлов .html и .css или из HTML-файла с тегами в заголовке. Я бы предпочел библиотеку PHP, если это возможно.

Под встроенным CSS я подразумеваю что-то вроде

 <span style="font: bla bla bla">Hi There!</span>
  

против

 <style>  
    .greeting { font: bla bla bla; }  
</style>
  

Мне часто нужно вставлять HTML в электронные письма, и это значительно упростило бы процесс.

Если кому-то интересно, мое текущее решение (для материалов, которые не часто обновляются) заключается в использовании механизма создания шаблонов Smarty для создания документа и присвоении части style =»» переменной внутри шаблона.

Затем я могу использовать эту переменную в каждом теге (например, <td {$td_style}> (К вашему сведению, {$variable} именно так переменные smarty вставляются в шаблон) и заставить его сгенерировать соответствующий HTML, удобный для электронной почты.

Однако я хочу что-то более общее, для чего я могу просто добавить немного HTML и CSS, а не конвертировать все это в шаблон smarty.

Кто-нибудь знает, существует ли подобная библиотека?

Комментарии:

1. Это, гм, творческое форматирование.

2. Именно по этой причине мне не нравится, когда мои клиенты имеют доступ к TinyMCE / CKEditor.

3. @alex почему именно это? Я как раз собирался предложить использовать wizzywig. @Brandon: Что значит «из тегов скрипта»?

4. @Madmartigan Я не шутил, просто помню, как съежился от текста с несколькими цветными буквами в середине слова.

5. @alex: Что мне нравится, так это вставки из их документа MS word, с миллионами пустых разделов с зашифрованными атрибутами id, и в каждом другом слове есть color:#000000; font-size:12px; font-family: Arial, Georgia, Comic Sans; или какой-то другой бессмысленный набор шрифтов, а также изображения, src указывающие на их жесткий диск.

Ответ №1:

Хотя я не знаю библиотеки, которая обрабатывает это, если вы настроены на PHP, вы могли бы сделать это довольно легко, я думаю, с помощью CSSTidy для разбора CSS, а затем с помощью синтаксического анализатора XML (идеально, если ваш код хорошо сформирован — возможно, SimpleXML или расширение DOM) или одного из парсеров HTML на основе PHP, которые я вижу там для разбора HTML, так что вы можете изменять HTML с помощью DOM-методов в соответствии с правилами CSS .

Однако, если вам не нужно, чтобы это было привязано к PHP-процессу, я рекомендую использовать JavaScript практически для чего-либо подобного, поскольку он может работать на стороне клиента (и в разных средах) и быть удобным инструментом для любого, кто хочет это сделать; вы должны уметь анализировать CSS с помощью http://glazman.org/JSCSSP / а затем с помощью DOMParser() и эквивалента IE по мере необходимости (для XHTML) или используйте innerHTML, этот htmlparser или любые другие анализаторы HTML.

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

Комментарии:

1. Мне нравится ваш ответ, и, вероятно, в конечном итоге я сделаю что-то подобное, когда у меня будет время. Javascript и теги <style> не работают ни в Gmail, ни в Outlook 2007 (среди прочих), что делает их непригодными для отправки электронных писем большой группе (отправка ~ 20 000 информационных бюллетеней преподавателям и студентам университета).

2. Теги <style>, к сожалению, не работают в Outlook 2007 или Gmail, поэтому для меня о них не может быть и речи. Мне нравится ваш ответ, я, скорее всего, пойду по пути Javascript, чтобы он мог быть интерактивным. Спасибо!

3. Пожалуйста, рассмотрите возможность поделиться результатом, если вы найдете универсальное решение и сможете использовать его с открытым исходным кодом!