我在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框架而不是链接。
答案 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标记:)
基本上伪代码就是这样的。
如果是,请将其替换为:
<iframe type="text/html"
width="640"
height="385"
src="<youtube URL>"
frameborder="0">
</iframe>