Preg_replace любые слова в сумме

Иногда я получаю оценку тела, как этот.

$result = eval(45 + hjh + 78 + 89 + hello);

Мне нужно заменить все неисчислимое (например, «hjh») на ноль везде в выражении, чтобы получить как это.

$result = eval(45 + 0 + 78 + 89 + 0);
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
7
56
2

Ответы 2

Что-то вроде этого может делать то, что вы хотите:

$s = "45 + hjh + 78 + 89 + hello";
$s = preg_replace("%[^-+*/0-9 ]+%","0",$s);
$result = eval ("return $s;");
echo "R=$result\n";

Но это обнаружение incalculables в регулярном выражении, вероятно, сломается в случае ввода большего количества творческий.

Замените любой символ, который НЕ является ^ в $allowed, на 0. Используемый разделитель ~ не может быть в $allowed, поэтому при необходимости вы можете изменить его:

$allowed = ' 0-9.*/+-';  //add everything that is allowed
$string = preg_replace("~[^$allowed]+~", '0', $string);

Однако это изменит такие вещи, как 1a + 1 на 10 + 1.

Другие вопросы по теме