Если в [[...]]
не может быть [
и ]
, вы можете использовать
$text = preg_replace("/\[\[([^][]*)SPACE([^][]*)]]/i",'$2',$text);
См. Демонстрационную версию regex . [^][]
Отрицательный класс символов будет соответствовать только символу, отличному от [
и ]
, и не будет пересекать границу [[...]]
.
В противном случае используйте жадный жетон закаленный :
$text = preg_replace("/\[\[((?:(?!\[{2}).)*?)SPACE(.*?)]]/is",'$2',$text);
См. эту демонстрацию регулярных выражений .
Шаблон (?:(?!\[{2}).)*?
будет соответствовать любому символу, 0 или более повторений, но как можно меньше, что неначать [[
последовательность символов и не пересечет границу следующего объекта [[
.