Jer*_*son 4 php regex hyperlink preg-replace
我想这样做,以便在我的聊天应用程序中,可以点击链接到网站,链接到YouTube和图像自动嵌入.
我已经用Java为我的WebIRC客户端制作了这段代码,但现在我正在尝试用PHP和JavaScript制作它.
我还不熟悉PHP所以我对那里使用正则表达式知之甚少.我想知道是否有某种善良的灵魂可以帮助我...
对于YouTube-thingy,我尝试了这个没有成功:
if (preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $message, $m)) {
$video_id = $m[1];
$message = preg_replace("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#","<iframe class='embedded-video' src='http://www.youtube.com/embed/" . $video_id . "' allowfullscreen></iframe>",$message);
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*per 14
这是我提出的解决方案:
$str = 'This is an image: google.ca/images/srpr/logo3w.png
YouTube: http://www.youtube.com/watch?v=V2b8ilapFrI&feature=related
Stackoverflow: http://stackoverflow.com/';
$str = preg_replace_callback('#(?:https?://\S+)|(?:www.\S+)|(?:\S+\.\S+)#', function($arr)
{
if(strpos($arr[0], 'http://') !== 0)
{
$arr[0] = 'http://' . $arr[0];
}
$url = parse_url($arr[0]);
// images
if(preg_match('#\.(png|jpg|gif)$#', $url['path']))
{
return '<img src="'. $arr[0] . '" />';
}
// youtube
if(in_array($url['host'], array('www.youtube.com', 'youtube.com'))
&& $url['path'] == '/watch'
&& isset($url['query']))
{
parse_str($url['query'], $query);
return sprintf('<iframe class="embedded-video" src="http://www.youtube.com/embed/%s" allowfullscreen></iframe>', $query['v']);
}
//links
return sprintf('<a href="%1$s">%1$s</a>', $arr[0]);
}, $str);
Run Code Online (Sandbox Code Playgroud)
如果您需要我为您澄清任何事情,请告诉我.