Мне удалось это выяснить.
function callback($match)
{
$matchit = strtr($match[0], array('left' => 'right', 'right' => 'left'));
return $matchit;
}
$css= preg_replace_callback('/{(.*?)}/i', 'callback', $css);
echo $css;
preg_replace_callback возвращает что-либо между {и}. Функция обратного вызова заменяет левую и правую.
Я продолжаю дорабатывать эту функцию, чтобы добавить какой-то триггер игнорирования, чтобы PHP игнорировал определенные классы / идентификаторы. Кроме того, он должен будет сделать некоторые изменения в отступах и полях, между прочим. Все это будет превращено в класс для тех, кто использует PHP для простого преобразования CSS в RTL.
Обновление:
Вы можете использовать вместо этого preg_replace :
$css = preg_replace_callback('/{(?!\/\*i\*\/)(.*?)}/i', 'callback', $css);
Затем вы можете поместить / * i * / в любую строку, которую хотите игнорировать. Например:
.test{/*i*/margin-left:0px;text-align:right}