Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在这种情况下,匹配正则表达式或解析url哪个更好_Php_Regex_Parsing - Fatal编程技术网

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
每次都会赢。(你为什么要重新发明轮子!?)