<?php
namespace In2code\In2template\Migration\Utility;
/**
* Class StringUtility
*/
class StringUtility
{
/**
* Parse every kind of Youtube URI and return video code
*
* Example URI:
* <a href="http://www.youtube.com/embed/6FjfewWAGdE?feature=player_detailpage" target="_blank" rel="noreferrer">www.youtube.com/embed/6FjfewWAGdE</a>
* <a href="http://www.youtube.com/embed/6FjfewWAGdE?feature=player_detailpage" target="_blank" rel="noreferrer">www.youtube.com/embed/6FjfewWAGdE</a>
* <a href="https://www.youtube.com/embed/6FjfewWAGdE" target="_blank" rel="noreferrer">www.youtube.com/embed/6FjfewWAGdE</a>
* <a href="https://youtube.com/embed/6FjfewWAGdE" target="_blank" rel="noreferrer">youtube.com/embed/6FjfewWAGdE</a>
* <a href="https://www.youtube-nocookie.com/embed/6FjfewWAGdE" target="_blank" rel="noreferrer">www.youtube-nocookie.com/embed/6FjfewWAGdE</a>
* <a href="http://www.youtube.com/watch?v=6FjfewWAGdE" target="_blank" rel="noreferrer">www.youtube.com/watch</a>
* <a href="http://www.youtube.com/watch?v=6FjfewWAGdE&feature=player_detailpage" target="_blank" rel="noreferrer">www.youtube.com/watch</a>
* www.youtu.be/6FjfewWAGdE
* youtu.be/6FjfewWAGdE
* youtube.com/watch?v=6FjfewWAGdE
* <a href="https://www.youtube.com/watch?v=6FjfewWAGdE&feature=youtu.be" target="_blank" rel="noreferrer">www.youtube.com/watch</a>
*
* @param string $uri
* @return string
*/
public static function getYoutubeCodeFromUri(string $uri): string
{
$code = '';
$regExp = '~^(http://|https://|.*?)(www.|.*?)(youtube.com|youtu.be|youtube-nocookie.com)/(embed/|watch\?v=|.*?)(.*?)(\?|\&|$)~';
preg_match($regExp, $uri, $result);
if (!empty($result[5])) {
$code = $result[5];
}
return $code;
}
}
[PHP] YouTube Code aus einer URL extrahieren
Wenn ihr ein eigenes Content Element für YouTube Videos baut, benötigt ihr den Video-Code um ein korrektes iFrame (z.B. mit der Domain youtube-nocookie.com) zu erzeugen. Man kann allerdings nie ganz sicher sein, was der Redakteur konfiguriert - eventuell ja eine ganze URL, oder eine gekürzte, oder nur den Code. Nachfolgendes Snippet kann euch hierbei helfen.
Kennst du das: Immer nur schnell schnell?
Wie wäre es einmal mit Zeit und Respekt für Codequalität? Arbeiten im Team? Automatisierte Tests?