Convierta específicamente solo las URL de YouTube en etiquetas de iframe mientras convierte las URL de BBCode en elementos html

Estoy tratando de convertir los enlaces de video de YouTube en iframes para insertarlos en mi sitio web, pero tengo un problema porque ya estoy convirtiendo las URL en etiquetas de anclaje y está en conflicto con la URL de YouTube.

Aquí está mi 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);

La primera línea obtiene algo que es solo una url simple, ya que estoy usando BBCode está en conflicto con otras cosas como[img] etiqueta. Los$youtubeURL es obtener todos los enlaces de youtube y convertirlos en iframes, pero debido a la conversión del primer enlace causa unhref para ser puesto en elscr=.

Respuestas a la pregunta(2)

Su respuesta a la pregunta