Разделение компонентов CSS для ввода в базу данных - PullRequest
1 голос
/ 03 августа 2010

КОНТЕКСТ:

Мой проект - это веб-сайт CMS, и CSS каждого пользователя хранится в таблице базы данных.Поля:

int     id            primary
int     site_id       index
string  selector
string  property
string  value
bool    important

Когда веб-сайт пользователя загружен, это простой запрос:

SELECT * FROM css_table WHERE site_id = $this_site_id

И с помощью PHP строки обрабатываются и превращаются в правильный CSS.

ВОПРОС:

Теперь мне нужно вернуться в обратном порядке.

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

Ответы [ 2 ]

1 голос
/ 03 августа 2010

Используя CSS Parser (github), предложенный dark_charlie , я смог придумать следующий код, чтобы превратить CSS обратно в SQL.

<?
require('cssparser.php');

$cssp = new cssparser;
$cssp->Parse('test.css');

$query = 'INSERT INTO css_table (`selector`, `property`, `value`) VALUES ';

foreach($cssp->css as $selector => $properties) {
    foreach($properties as $property => $value) {
        $query .= "('$selector', '$property', '$value'), ";
    }
}

$query = substr_replace($query, ';', -2);
echo $query; // Testing
?>

Приложение: После использования метода, который я разработал здесь, я быстро понял, насколько непрактично было вставлять каждое свойство в виде новой строки.CSS для одной доски phpbb занимает более 1000 строк, и умножить ее на каждую независимую доску было безумно.

Лучшей альтернативой для моей ситуации было просто использовать одно поле со средним текстом и поместить необработанный CSS встол.Чтобы изменить свойства, я анализирую CSS в массив, изменяю свойства по мере необходимости, анализирую массив обратно в CSS и обновляю БД новым CSS.

Для режима редактирования «Расширенный CSS» этоПростая выборка / обновление теперь, поскольку БД содержит простой CSS.

0 голосов
/ 03 августа 2010

Вам следует искать синтаксический анализатор CSS (если вы не хотите писать свой):
http://csstidy.sourceforge.net/
http://www.phpclasses.org/package/1289-PHP-CSS-parser-class.html

или просто Google, их множество.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...