I want to replace the occurrences of the pattern “binary_function([x,y])” with substring “XY” in a given string.
I have it working with the following code:
// $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);
However, I also want it to replace “binary_function([x1,y1])” with substring “X1Y1”, and any length of the arguments inside the square brackets e.g. [x11,y12], [var1,var2], etc.
I tried this:
// $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);
but it did not work.
Can anyone please help here?
Thanks.
Advertisement
Answer
You can use
'/binary_function([([^][s,]+),([^][s,]+)])/'
See the regex demo
Regex details
binary_function([
– abinary_function([
text([^][s,]+)
– Group 1: any one or more (due to+
) chars other than]
,[
, whitespace and,
,
– a comma([^][s,]+)
– Group 2: any one or more (due to+
) chars other than]
,[
, whitespace and,
])
– a])
string.