Öhm.. Ich hab den Thread gestern wiedergefunden und mich gleich mal drüber her gemacht. Das da ist dabei rausgekommen:
$regex = [
// Regex #1: Youtube
'/(\s|^)(' . // Whitespace davor
'https?:\/\/(((www\.)?youtube(-nocookie)?\.com\/watch\?v=)|(youtu\.be\/))' . // Domain, Pfad
'([a-zA-Z0-9_-]{8,16}' . // Video-ID
'([&\?]((t=[0-9hms]{2,9})|(list=[a-zA-Z0-9_-]{16,48})))?)' . // Zeit oder Liste
'([&\?][a-zA-Z0-9_=-]+)*' . // Anhängsel
')(\s|$)/' // Whitespace danach
,
// Regex #2: URLs
'/(\s|^)(' . // Whitespace davor
'((https?|ftp):\/\/)' . // Protokoll
'([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+' . // Subdomains, Domain
'([a-zA-Z]{2,16}\.?)' . // TLD
'(\/[\x23-\x7E!äöüÄÖÜß]*)*' . // Anhängsel (Pfad, Parameter, Anker, ...)
')(\s|$)/' // Whitespace danach
];
$replace = [
// Replace #1: Youtube
'$1<iframe width="560" height="315" ' .
'src="//www.youtube-nocookie.com/embed/$7" ' .
'frameborder="0" allowfullscreen></iframe>$14'
,
// Replace #2: URLs
'$1<a href="$2">$2</a>$9'
];
$OUTPUT = preg_replace( $regex, $replace, $INPUT);
Im Anhang hängt der Rest der Datei, der Code hier ist der Teil, der die Ersetzungen macht.
Ich hoffe mal, dass das noch aktuell ist