我有一小段代码检查字符串是否为url并添加< a href>标记以创建链接。我也检查了youtube链接的字符串,然后将rel =“youtube”添加到<一个>标签。
如何才能将代码添加到youtube链接?
如何让它为任何类型的图像链接添加不同的rel?
$text = "http://site.com a site www.anothersite.com/ http://www.youtube.com/watch?v=UyxqmghxS6M here is another site";
$linkstring = preg_replace( '/(http|ftp)+(s)?:(\/\/)((\w|\.)+)(\/)?(\S+)?/i', '<a href="\0">\4</a>', $text );
if(preg_match('/http:\/\/www\.youtube\.com\/watch\?v=[^&]+/', $linkstring, $vresult)) {
$linkstring = preg_replace( '/(http|ftp)+(s)?:(\/\/)((\w|\.)+)(\/)?(\S+)?/i', '<a rel="youtube" href="\0">\4</a>', $text );
$type= 'youtube';
}
else {
$type = 'none';
}
echo $text;
echo $linkstring, "<br />";
echo $type, "<br />";
答案 0 :(得分:2)
尝试http://simplehtmldom.sourceforge.net/。
<强>代码强>:
<?php
include('simple_html_dom.php');
$html = str_get_html('<a href="http://www.youtube.com/watch?v=UyxqmghxS6M">Link</a>');
$html->find('a', 0)->rel = 'youtube';
echo $html;
<强>输出强>:
[username@localhost dom]$ php dom.php
<a href="http://www.youtube.com/watch?v=UyxqmghxS6M" rel="youtube">Link</a>
您可以使用此库构建整个页面DOM或简单的单个链接。
检测网址的主机名: 将url传递给parse_url。 parse_url返回URL部分的数组。
<强>代码强>:
print_r(parse_url('http://www.youtube.com/watch?v=UyxqmghxS6M'));
<强>输出强>:
Array
(
[scheme] => http
[host] => www.youtube.com
[path] => /watch
[query] => v=UyxqmghxS6M
)
答案 1 :(得分:1)
尝试以下方法:
//text
$text = "http://site.com/bounty.png a site www.anothersite.com/ http://www.youtube.com/watch?v=UyxqmghxS6M&featured=true here is another site";
//Youtube links
$pattern = "/(http:\/\/){0,1}(www\.){0,1}youtube\.com\/watch\?v=([a-z0-9\-_\|]{11})[^\s]*/i";
$replacement = '<a rel="youtube" href="http://www.youtube.com/watch?v=\3">\0</a>';
$text = preg_replace($pattern, $replacement, $text);
//image links
$pattern = "/(http:\/\/){0,1}(www\.){0,1}[^\/]+\/[^\s]+\.(png|jpg|jpeg|bmp|gif)[^\s]*/i";
$replacement = '<a rel="image" href="\0">\0</a>';
$text = preg_replace($pattern, $replacement, $text);
请注意,后者只能检测具有扩展名的图像的链接。因此,将无法检测到www.example.com?image=3等链接。