Я предполагаю, что вы пишете bbcode. В этом случае написание фактического парсера будет быстрее, но если вы просто захотите выполнить поиск и заменить что-то вроде
preg_replace('/\[url=(.*?)\](.*?)\[\/url\]/i', '<a href='.$1.'>'.$2.'</img>');
Я не могу вспомнить jsfiddle-подобный сайт, который позволяет вам показывать регулярные выражения, поэтому, если кто-то знает это, пожалуйста, оставьте это в комментариях.
Кроме того, если вы просто скопируете и вставите мой код в ваш bbcode seach и замените файл ... НЕ СЛЕДУЕТ, что он уязвим для xss-инъекций и на самом деле не удивительное выражение, это просто пример.