Нужно регулярное выражение, чтобы заменить все внутренние скобки на myReplace! Важно, чтобы пробелы и строки оставались как есть!
$fileContent = <div class="panel-body">
{toChangeOne}{toChangeTwo}
{
toChangeTree
}
</div>
$change = preg_replace('NEEDED_REGEX', 'myReplace', $fileContent);
Итак, в основном, все, что вам нужно сделать, это найти набор фигурных скобок и заменить их, а также все, что внутри.
Нечто подобное должно работать для вас:
<?php
$fileContent = '<div class="panel-body">
{toChangeOne}{toChangeTwo}
{
toChangeTree
}
</div>';
$fileContent = preg_replace('~\{.*?\}~sm', 'myReplace', $fileContent);
print $fileContent;
Вот что означает это выражение \{.*?\}
:
\{
— ищу открывающую фигурную скобку {
, Мы должны избежать этого с обратной косой чертой \
поскольку фигурные скобки имеют особое значение в регулярных выражениях..*?
— Подходим любой персонаж .
любое количество раз *
пока мы не дойдем до следующей части нашего заявления ?
,\}
— Следующая часть нашего заявления — заключительная фигурная скобка }
, Опять же, нам нужно избежать обратной косой черты \
,Вот рабочая демонстрация:
Вы также можете подойти к вашей проблеме, используя массив ключей для изменения, как показано ниже. Это может быть полезно при попытке заменить несколько строк.
<?php
// array with keys that you'll be changing in your text
$toChange = array(
"{toChangeOne}" => "First Change",
"{toChangeTwo}" => "Second Change",
"{toChangeThree}" => "Third Change");$fileContent = '<div class="panel-body">
{toChangeOne}{toChangeTwo}
{
toChangeThree
}
</div>';
// loop through all the keys you want to change
foreach($toChange as $key => $value){
// prep regex
// remove the openning and curly braces this
// way we can match anything that matches our
// keys even if there's a mixture of returns
// or empty spaces within the curly braces
$key_text = str_replace("{", "", $key);
$key_text = str_replace("}", "", $key_text);
// "\{" - matches the character "{" literally
// "(\s|\s+)?" - matches any white space. In our case
// we might want it to be optional hense
// the "?"// "\}" - matches the character "}" literally
$regex = '/\{(\s|\s+)?'.$key_text.'(\s|\s+)?\}/';
$fileContent = preg_replace($regex, $value, $fileContent);
}
echo $fileContent;