Шаблоны, обработка переменных с помощью regexp в php

У меня есть многострочная строка с некоторыми переменными, такими как $Item_#1_Value$, $Item_#2_Value$ и т. д. Я хотел бы заменить (без учета регистра) все эти экземпляры реальными значениями, что не является проблемой для str_ireplace().

Проблема в том, что мне нужно удалить также все пробелы, которые могут (или не могут) быть смежными с этими переменными. Остальные пробелы, не смежные с переменными, трогать не нужно.

Например: Если $item_#1_Value$ - это 1234, то строки: ABC$item_#1_Value$QWERT, ABC $ITEM_#1_VALUE$ QWERT, ABC $item_#1_Value$ QWERT необходимо заменить на ABC1234QWERT.

Я понял, что вместо preg_replace(...) следует использовать str_ireplace(...), но я не могу понять, какой шаблон регулярного выражения мне следует использовать.

Стоит ли изучать 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 и хотите разрабатывать...
0
0
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Один из способов сделать это с помощью регулярных выражений - сопоставить ваш тег с необязательным окружением нескольких пробелов:

\s*\$item_#1_Value\$\s*

Демо

Код PHP

<?php
$strings[] = 'ABC$item_#1_Value$QWERT';
$strings[] = 'ABC $ITEM_#1_VALUE$ QWERT';
$strings[] = 'ABC $item_#1_Value$ QWERT';
foreach ($strings as $string) {
    $string = preg_replace('/\s*\$item_#1_Value\$\s*/i', "1234", $string);
    echo $string.PHP_EOL;
}

Демо

Результат

ABC1234QWERT

ABC1234QWERT

ABC1234QWERT

Ваш первый ответ не подходит, он удалит ВСЕ пробелы, а не только соседние. Я не предоставлял образцы с этими пробелами, но упомянул об этом в своем объяснении. Второе предложение похоже именно то, что мне нужно, спасибо, пойдет на проверку.

Serge S 13.03.2018 03:51

@SergeS Я, кажется, пропустил эту часть, извините. Я обновил ответ. Обратите внимание, что второй ответ тоже отредактирован в соответствии с вашими потребностями.

ishegg 13.03.2018 03:55

Прекрасно работает! Еще раз спасибо.

Serge S 13.03.2018 04:11

Рад помочь моему другу.

ishegg 13.03.2018 04:39

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