youtube用PHP嵌入代码

时间:2014-01-30 17:05:33

标签: php

我在php中创建了一个博客。用户可以写一些东西并发布。如果这包含网址,则使用以下链接创建自动链接:

<?php

//...code

$row['comment'] = preg_replace('@(https?://([-\w.]+[-\w])+(:\d+)?(/([\w-.~:/?#\[\]\@!$&\'()*+,;=%]*)?)?)@', '<a href="$1" target="_blank"><font color="#69aa35">$1</font></a>', $row['comment']);

?>

在帖子中使用此功能,成功发布文本,并在文本内以链接格式显示网址。任何想法我怎么能改变这个,所以如果有一个youtube的链接,那么要创建一个youtube框架。例如,在Facebook中,当您发布YouTube地址时,会创建并发布youtube框架而不是链接。

2 个答案:

答案 0 :(得分:2)

我已经改进了我的答案并测试了这段代码:

<?php
// This is your comment string containing the youtube link
$string="Here is a link - https://www.youtube.com/watch?v=LJHFXenOPi4";
// This will remove all links from the input string
preg_match('/[a-zA-Z]+:\/\/[0-9a-zA-Z;.\/?:@=_#&%~,+$]+/', $string, $matches);
foreach($matches as $url){
    // Parse each url within the comment data
    $input = parse_url($url);
    if ($input['host'] == 'youtube.com' || $input['host'] == 'www.youtube.com' ) {
        // If it is a youtube link, then parse the get variables
        parse_str(parse_url($url, PHP_URL_QUERY), $variables);
        // Echo out the iframe with the relevant video ID
        echo '<iframe width="560" height="315" src="//www.youtube.com/embed/'.$variables['v'].'" frameborder="0" allowfullscreen></iframe>';
    }
}
?>

我希望这是你正在寻找的东西,它在一些测试中对我有用

答案 1 :(得分:1)

你知道解决方案不是吗? :)如果代码段包含youtube.com网址,则使用相同的模式匹配,您可以将其替换为youtube embed标记:)

基本上伪代码就是这样的。

  • 检查粘贴的评论以查看您是否存在YouTube网址(修改您用于查找网址的相同正则表达式,只需将其设置为youtube)
  • 如果是,请将其替换为:

    <iframe type="text/html" width="640" height="385" src="<youtube URL>" frameborder="0"> </iframe>