正则表达式PHP – 自动检测YouTube,图像和“常规”链接

我想这样做,以便在我的聊天应用程序中,可以点击链接到网站,链接到YouTube和图像自动嵌入.

我已经用Java为我的WebIRC客户端制作了这段代码,但现在我正在尝试用PHPJavaScript制作它.

我还不熟悉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);
}

解决方法

这是我提出的解决方案:

$str = 'This is an image: google.ca/images/srpr/logo3w.png

YouTube: http://www.youtube.com/watch?v=V2b8ilapFrI&feature=related

Stackoverflow:  https://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);

如果您需要我为您澄清任何事情,请告诉我.

相关文章

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字...
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。下面整理一些常用的正则...
0. 注: 不同语言中的正则表达式实现都会有一些不同。下文中的代码示例除特别说明的外,都是使用JS中的...
 正则表达式是从信息中搜索特定的模式的一把瑞士军刀。它们是一个巨大的工具库,其中的一些功能经常...
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数...
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n...