Php 在这种情况下,匹配正则表达式或解析url哪个更好
假设我们有以下链接Php 在这种情况下,匹配正则表达式或解析url哪个更好,php,regex,parsing,Php,Regex,Parsing,假设我们有以下链接 $link = "http://www.mysite.com/bbbbbbb.flv?something"; 我们想要匹配它 关于这个问题,谢谢大家@ 我们有两种方法regular expression和parse\u url $arr = parse_url($link); $pathParts = pathinfo($arr['path']); if ($pathParts['extension'] == 'flv') echo "valid extensio
$link = "http://www.mysite.com/bbbbbbb.flv?something";
我们想要匹配它
关于这个问题,谢谢大家@
我们有两种方法regular expression
和parse\u url
$arr = parse_url($link);
$pathParts = pathinfo($arr['path']);
if ($pathParts['extension'] == 'flv')
echo "valid extension";
else
echo "invalid extension";
那么我的问题是,从你的角度来看,哪一个对我的网站更好(例如,更快、更准确……等等)
方法1正则表达式
if (preg_match('/\.flv(\?|$)/i', $link)) {
echo 'It has flv';
} else {
echo 'It does not have';
}
方法2解析url
$arr = parse_url($link);
$pathParts = pathinfo($arr['path']);
if ($pathParts['extension'] == 'flv')
echo "valid extension";
else
echo "invalid extension";
@根据,使用内置的
parse\u url
比preg\u match
慢得多。这种情况是可以理解的,因为正则表达式捕获单个结果,而parse_url
捕获并解析url的所有组件。您正在寻找意见。这不是这个网站的目的。我会去substr($link,-4,4)='.flv'
你不应该信任文件扩展名,请检查文件的标题。@Babblo谢谢您的警告,但它是与上载/下载/流媒体活动无关的外部链接,只是文本文件中显示的链接,但我需要知道它的扩展名以提供一些信息。parse\u url
仅在输入字符串为有效url时有效,而regex将接受甚至.FLV
。答案取决于您的要求。非常感谢您提供的这些信息,我一生都在思考preg\u match
是最慢的,实际上是速度vs准确性
范例。编写一个完整的正则表达式来解析URL的各个组件可能是非常具有挑战性的parse_url
显然是在使用有效的url。@anubhava touché。如果我们为了准确性而努力,parse\u url
每次都会赢。(你为什么要重新发明轮子!?)