正则表达式PHP – 自动检测YouTube,图像和“常规”链接
发布时间:2020-12-14 06:05:44 所属栏目:百科 来源:网络整理
导读:我想这样做,以便在我的聊天应用程序中,可以点击链接到网站,链接到YouTube和图像自动嵌入. 我已经用Java为我的WebIRC客户端制作了这段代码,但现在我正在尝试用PHP和JavaScript制作它. 我还不熟悉PHP所以我对那里使用正则表达式知之甚少.我想知道是否有某种善
我想这样做,以便在我的聊天应用程序中,可以点击链接到网站,链接到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); } 解决方法
这是我提出的解决方案:
$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); 如果您需要我为您澄清任何事情,请告诉我. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在oracle中保存提交语句,直到执行所有脚本
- c# – 我是否实例化了一个无效的对象?
- Boost.Pointer容器在C 11/14中被std :: unique_ptr淘汰了?
- 非本地C 11 lambdas是否存在于匿名命名空间中?
- SQLite、MySQL和PostgreSQL 三种关系数据库哪个好?
- ruby-on-rails – 如何将任意文件包含到HAML模板中?
- c – ZXing库:iOS中的错误:未使用私有字段“cached_y_”
- ruby-on-rails – 在应用程序中使用rails engine部分
- Vue学习之路7-v-on指令学习之简单事件绑定
- 关联、组合、聚合、依赖关系比较