Для решения задачи, вам нужно использовать регулярное выражение, которое захватывает содержимое, заключенное в различные типы скобок: квадратные `[]`, фигурные `{}`, круглые `()`, а также любые символы между ними. Далее, с помощью функции `preg_replace` вы сможете заменить все найденные совпадения.
Вот регулярное выражение, которое подходит для вашей задачи:
```php
/\[[^\]]*\]|\{[^}]*\}|\([^\)]*\)/
```
Это выражение:
- `\[[^\]]*\]` — захватывает содержимое, заключенное в квадратные скобки.
- `\{[^}]*\}` — захватывает содержимое, заключенное в фигурные скобки.
- `\([^\)]*\)` — захватывает содержимое, заключенное в круглые скобки.
Объединяя эти три части с помощью `|`, вы получаете выражение, которое охватывает все типы скобок.
Теперь можно использовать `preg_replace`, чтобы заменить все такие вхождения на символ `'!'`. Вот пример кода:
```php
$str = '[abc] {abc} abc (abc) [abc]';
$result = preg_replace('/\[[^\]]*\]|\{[^}]*\}|\([^\)]*\)/', '!', $str);
echo $result;
```
При выполнении этого кода, вы получите строку:
```
! abc ! !
```
Как вы видите, все строки, заключенные в скобки, были заменены на `!`.