Удалить ;; в строке

0

Вопрос

У меня есть строка

;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic;;Called by the Grave);;{card}(Secrets of Dark Magic;;Called by the Grave;;Secrets of Dark Magic)

Я хочу удалить ;; здесь {карта}(Секреты Темной магии;;Вызвана Могилой) ( не ;; снаружи)

Результат, которого я хочу

   ;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic;Called by the Grave);;{card}(Secrets of Dark Magic;Called by the Grave;Secrets of Dark Magic)

Я попробовал код ниже, но он удаляет все ;; в строке!

$search = ';;';
$string = preg_replace("/($search)/", ";", $string); 
php regex
2021-11-24 05:22:41
1

Лучший ответ

1

Мы можем использовать preg_replace_callback здесь, чтобы указать весь текст, заключенный в круглые скобки (...). Затем при каждом совпадении выполняйте простую замену строки из ;; для одиноких ;.

$input = ";{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic;;Called by the Grave);;{card}(Secrets of Dark Magic;;Called by the Grave;;Secrets of Dark Magic)";
$output = preg_replace_callback("/\(.*?\)/", function($matches) {
    return str_replace(";;", ";", $matches[0]);
}, $input);
echo $input;
echo "\n";
echo $output;

Это печатает:

;{карта}(Секреты Темной Магии);;{карта}(Секреты Темной Магии);;{карта}(Секреты Темной Магии);;{карта}(Секреты Темной Магии;;Вызвана Могилой);;{карта}(Секреты Темной Магии;;Вызвана Могилой;;Секреты Темной Магии)

;{карта}(Секреты Темной Магии);;{карта}(Секреты Темной Магии);;{карта}(Секреты Темной Магии);;{карта}(Секреты Темной Магии;Вызвана Могилой);;{карта}(Секреты Темной Магии;Вызвана Могилой;Секреты Темной Магии)

2021-11-24 05:29:36

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................