Замените строку, соответствующую шаблону, используя preg_replace_callback

Я хочу заменить вхождения шаблона binary_function([x,y]) подстрокой XY в заданной строке.

У меня работает со следующим кодом:

// $string is the string to be searched
$string = preg_replace_callback('/binary_function\(\[(\S),(\S)\]\)/', function ($word) {
        $result = strtoupper($word[1]) . strtoupper($word[2]);              
        return $result;
        }, $string);

Однако я также хочу, чтобы он заменил binary_function([x1,y1]) подстрокой X1Y1 и любой длиной аргументов внутри квадратных скобок, например. [x11,y12], [var1,var2] и т. д.

Я пробовал это:

// $string is the string to be searched
$string = preg_replace_callback('/binary_function\(\[(\S+),(\S+)\]\)/', function ($word) {
        $result = strtoupper($word[1]) . strtoupper($word[2]);              
        return $result;
        }, $string);

но это не сработало.

Кто-нибудь может помочь здесь?

Спасибо.


person Amine Marref    schedule 12.10.2020    source источник
comment
Потрясающе :-) Большое спасибо.   -  person Amine Marref    schedule 12.10.2020


Ответы (1)


Вы можете использовать

'/binary_function\(\[([^][\s,]+),([^][\s,]+)]\)/'

См. демонстрацию регулярного выражения.

Сведения о регулярном выражении

  • binary_function\(\[ - текст binary_function([
  • ([^][\s,]+) - Группа 1: любой один или несколько (из-за +) символов, кроме ], [, пробела и ,
  • , - запятая
  • ([^][\s,]+) — Группа 2: любой один или несколько (из-за +) символов, кроме ], [, пробела и ,
  • ]\) - строка ]).
person Wiktor Stribiżew    schedule 12.10.2020
comment
Большое спасибо за подробное объяснение. - person Amine Marref; 12.10.2020