Изменить каждое число в тексте на заданную величину

250
07 июля 2017, 04:02

Есть файл стилей. Нужно изменить размер каждого шрифта на заданную величину.

На входе

body {
    font-size: 13px;
}
.style1 {
    font-size: 18px;
}

и тд

На выходе

body {
    font-size: 15px;
}
.style1 {
    font-size: 20px;
}

Интернеты пишут, что регулярки не поддерживают арифметические выражения, но может есть какая то лазейка...

Answer 1

Используйте замену по регулярному выражению с callback-функцией preg_replace_callback

$css = <<<CSS
body {
    font-size: 13px;
}
.style1 {
    font-size: 18px;
}
CSS;
$inc = 2;
 $css = preg_replace_callback(
              "/(font-size:\s*)(?<size>\d+)px/im", 
              function($matches) use ($inc){
                  return $matches[1].($matches['size'] + 2)."px";
              },
              $css
          );
print_r($css);

на выходе получите желаемые

body {
    font-size: 15px;
}
.style1 {
    font-size: 20px;
}

Есть, конечно, нюанс, что шрифт может быть задан как font: 20px Tahoma ;. Для замены по нескольким маскам можете использовать preg_replace_callback_array()

READ ALSO
Можно ли установить кнопку для запуска WhatsApp на сайте

Можно ли установить кнопку для запуска WhatsApp на сайте

Есть ли возможность запуска чата WhatsApp со своей картинкой? Если да, то какое?

334
Как сделать широкий текстовый курсор в input type=text

Как сделать широкий текстовый курсор в input type=text

Нужно зделать широкий текстовый курсор в input type=text и чтобы при перемещении его назад он становился под буквой, а та окрашивалась в контрастный...

312
ошибка 500 при генерации sitemap

ошибка 500 при генерации sitemap

здравствуйте, для самописного сайта хочу создать sitemapно при генерировании через онлайн сервисы пишет ошибку 500

333
C# проблема в скриптах Unity

C# проблема в скриптах Unity

Код - часть проекта игры на Unity, и проблема в том, что когда игрок пропускает 3 зомби или убивает 1 человека, игра должна останавливатьсяДо этого...

265