У меня есть многострочная строка с некоторыми переменными, такими как $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(...), но я не могу понять, какой шаблон регулярного выражения мне следует использовать.






Один из способов сделать это с помощью регулярных выражений - сопоставить ваш тег с необязательным окружением нескольких пробелов:
\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
@SergeS Я, кажется, пропустил эту часть, извините. Я обновил ответ. Обратите внимание, что второй ответ тоже отредактирован в соответствии с вашими потребностями.
Прекрасно работает! Еще раз спасибо.
Рад помочь моему другу.
Ваш первый ответ не подходит, он удалит ВСЕ пробелы, а не только соседние. Я не предоставлял образцы с этими пробелами, но упомянул об этом в своем объяснении. Второе предложение похоже именно то, что мне нужно, спасибо, пойдет на проверку.