Задать вопрос
@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 функции я возвращаю пустую строку, для того, чтобы раз за разом укорачивать мое выражение, поступившее на вход.
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

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

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