Preg_replace и знак доллара

136
18 февраля 2021, 00:00

В цикле формируется значение цен, примерно так:

$n=0;
$pricesArray - массив цен
$cell = '<td><input type="text" class="input-text" name="{{cellname}}" value="{{val}}"></td>'
for($i=0; $i < $countColumns; $i++){
    //$pricesArray[$n]['prices'][$i] - значение примерно такое 15.09
    $value = sprintf("%01.2f", $pricesArray[$n]['prices'][$i]);
    $value = '$' . $value;
    $cell = preg_replace('/{{val}}/',$value, $cell);
}

в результате на каждой итерации вместо значения {{val}} должно быть такое: $15.09, а получается такое: .09
Как правильно добавлять знак доллара к цене?

Answer 1

Шаблон {{val}} не содержит никаких регулярных выражений, поэтому использование preg_replace бессмысленно, достаточно сделать:

$cell = str_replace('{{val}}', $value, $cell);

Что касается preg_replace то выражение $15 в замене считается получением 15-й группы из совпадения. Естественно у вас такой нет, поэтому надо экранировать $:

$value = '\$' . $value;
$cell = preg_replace('/{{val}}/', $value, $cell);

Пример с обоими вариантами - https://3v4l.org/Er3l9

Answer 2

Проблема в использовании preg_replace. Это не только утяжеляет код, но и приводит к такой ошибке. Нужно заменить

$cell = preg_replace('/{{val}}/',$value, $cell);

на

$cell = str_replace('{{val}}',$value, $cell);
READ ALSO
Не могу понять причину ошибки Fatal error: Cannot redeclare class Less_VisitorReplacing

Не могу понять причину ошибки Fatal error: Cannot redeclare class Less_VisitorReplacing

Ошибка проявляется не всегда, чаще после очистки кеша сайтаБывает 5 проходов по сайту нормально, на 6 выскакивает ошибка

119
Уточнение по работе функции move_uploaded_file

Уточнение по работе функции move_uploaded_file

Я хочу сделать проверку: Если файл перемещен, то сделать что-тоПодскажите какой код верный:

103
zend_mm_heap corrupted error

zend_mm_heap corrupted error

У меня есть скрипт на php, который работает используя pthreadsТо есть многопоточность

129
Запустить php как html

Запустить php как html

Переименовал indexphp в index

115