Converter especificamente apenas URLs do YouTube em tags iframe e converter URLs do BBCode em elementos html

Estou tentando converter links de vídeo do youtube em iframes para incorporá-los ao meu site, mas estou tendo um problema, pois já estou convertendo URLs em tags de ancoragem e está em conflito com o URL do YouTube.

Aqui está o meu código:

$string = 'https://www.google.com and https://www.youtube.com/watch?v=umFQckeDwEE';
$url = '~(\s|^)(https?://.+?)(\s|$)~im';
$string = preg_replace($url, '[url=$0]$0[/url]', $string);
$youtubeURL = '/\s*[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i';
$string = preg_replace($youtubeURL, '<iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/$2\" allowfullscreen></iframe>', $string);

A primeira linha recebe qualquer coisa que seja apenas uma URL simples, já que estou usando o BBCode, conflitando com outras coisas como o[img] tag. O$youtubeURL é obter todos os links do youtube e transformá-los em iframes, mas devido à primeira conversão de link, ele causa umhref para ser colocado noscr=.

questionAnswers(2)

yourAnswerToTheQuestion