php preg-заменить фатальную ситуацию

#php #regex #preg-replace

#php #регулярное выражение #preg-заменить

Вопрос:

мне нужно преобразовать nubmer в строку (разделив каждые 3 числа на пробел, т.е 20000 => 20 000, 1400000 => 1 400 000)

мой код:

$cena = '20000';

$cena = preg_replace('/D /g', '', $cena);

$cena = preg_replace('/d(?=(?:d{3}) (?!d))/g', '$amp; ', $cena);

это приводит к:

Warning: preg_replace() [function.preg-replace]: Unknown modifier 'g' in myfile.php on line xxx

что не так?

Комментарии:

1. не используйте preg_replace, используйте number_format()

2. @Dagon один момент, чтобы попробовать

Ответ №1:

 $number=1400000;
$format = number_format($number, 0, '', ' ');

echo $format; //1 400 000
  

Ответ №2:

Я предполагаю, что вы пытаетесь выполнить глобальную замену с использованием g модификатора. preg_replace не поддерживает g модификатор, отсюда и ошибка, которую вы получаете.

Вместо этого preg_replace принимает необязательный limit параметр, который определяет максимальное количество замен, которые будут выполнены. По умолчанию значение равно -1, что означает неограниченный. Другими словами, он уже делает то, что вы пытаетесь сделать.

Со страницы руководства:

 mixed preg_replace ( mixed $pattern , mixed $replacement ,
                     mixed $subject [, int $limit = -1 [, int amp;$count ]] )