@danforth

Почему preg_replace_callback работает как нужно, кроме того что возвращает пустую строку?

Всем привет:
Есть регулярка
([\d]+\.?[\d]*)|([\+\-\*\/]+)
PHP при работе функции preg_replace_callback выдает следующий массив
array(3) {
  [0]=>
  string(1) "*"
  [1]=> // <-- откуда появился этот элемент массива
  string(0) ""
  [2]=>
  string(1) "*"
}


В нулевом элементе массива строка состоящая из одного символа "*", при том первый элемент массива содержит пустую строку. Откуда она берется? Мне нужно, чтобы в первом элементе массива была звездочка (или плюс, минус и т.д по регулярке). На каждый не числовой символ в массиве появляется эта пустая строка.

На вход подаю это: 5+5-23+5.154*15
Предварительно чищу так:
$this->expression = preg_replace('/\s+/', '', $expression);
preg_replace_callback('/([\d]+\.?[\d]*)|([\+\-\*\/]+)/', array($this, "parse"), $this->expression);


В callback функции я возвращаю пустую строку, для того, чтобы раз за разом укорачивать мое выражение, поступившее на вход.
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы