Проблема в том, что ваша замещающая строка выглядит следующим образом:
'$1$2$3$488$6'
^^^
Поскольку символ, следующий сразу за номером группы, является цифрой, он интерпретируется как группа 48, а не как группа 4.
См. Руководство preg_replace"Пример # 1 Использование обратных ссылок с последующими числовыми литералами". Наименьшее изменение, которое требуется для его работы, - это окружить 4 фигурными скобками так, чтобы он отделился от 88.
$replacement = '$1' . '$2' . '$3'. '${4}'. $element_width . '$6';
Но это не очень хороший способ сделать это, а также есть ряд проблем с вашим кодом.
- Регулярные выражения не очень подходят для анализа и изменения CSS.
- Сначала вы пишете
$elementwidth
, а затем пишете $element_width
.
- Нет необходимости создавать 6 разных групп, если вы собираетесь заменить только одну из них.