<?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] Extract YouTube Code from a given URL
If you build your own content element for YouTube videos, you need the video code to generate a correct iFrame (e.g. with the domain youtube-nocookie.com). However, you can never be quite sure what the editor is configuring - maybe a whole URL, or an abbreviated one, or just the code. The following snippet can help you with this.
"Code faster, look at the time" - does this sound familiar to you?
How about time and respect for code quality? Working in a team? Automated tests?