После того, как поиск по SO и другим форумам также наткнулся на различную документацию по функциям php, я попытался отредактировать найденную здесь функцию (преобразовывает URL-адреса в интерактивные ссылки), чтобы она также обрабатывала встроенное видео, к сожалению, мои навыки беден, и я считаю, что я не совсем понимаю, create_function()
чтобы быть успешным в этом.
Вот мой код яичницы-болтуньи:
private function _check4Links($text){
$pattern = '#\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#';
$callback = create_function('$matches', '
$url = array_shift($matches);
$url_parts = parse_url($url);
if(preg_match("%(?:youtube\.com/(?:user/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i", $url, $match)){
return sprintf(\'<iframe title="YouTube video player" class="youtube-player" type="text/html" width="400" height="244" src="http://www.youtube.com/embed/\'.$match[1].\'" frameborder="0" allowFullScreen></iframe>\', $url, $text);
}else{
$text = parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH);
$text = preg_replace("/^www./", "", $text);
$last = -(strlen(strrchr($text, "/"))) + 1;
if ($last < 0) {
$text = substr($text, 0, $last) . "…";
}
return sprintf(\'<a target="_blank"rel="nofollow" href="%s">%s</a>\', $url, $text);
}');
return preg_replace_callback($pattern, $callback, $text);
}
Я должен также упомянуть, что я не ищу кого-то, чтобы просто показать мне правильный код, я ищу кого-то, чтобы объяснить мне, почему мой код не работает и что я делаю неправильно. Спасибо за ваше время:)