Php 在将URL传递给preg_match()之前,是否应该使用strstr()松散地验证URL?
我正在编写一个函数来解析一些视频站点URL,以便生成嵌入html:Php 在将URL传递给preg_match()之前,是否应该使用strstr()松散地验证URL?,php,preg-match,strstr,Php,Preg Match,Strstr,我正在编写一个函数来解析一些视频站点URL,以便生成嵌入html: if (strstr($url, 'a.com')) { $from = 'a'; } elseif (strstr($url, 'b.com')) { $from = 'b'; } else { return 'Wrong Video Url!'; } if ($from == 'a') { // use preg_match() to retrieve video id to generat
if (strstr($url, 'a.com')) {
$from = 'a';
} elseif (strstr($url, 'b.com')) {
$from = 'b';
} else {
return 'Wrong Video Url!';
}
if ($from == 'a') {
// use preg_match() to retrieve video id to generate embedding html
if (preg_match('#^http://a\.com/id_(\w*?)\.html$#', $url, $matches)) {
// return video embedding html
}
return 'Wrong a.com Video Url!';
}
if ($from == 'b') {
if (preg_match('#^http://b\.com/v_(\w*?)\.html$#', $url, $matches)) {
//return video embedding html
}
return 'Wrong b.com Video Url!';
}
我使用strstr()
的目的是在某些情况下减少对preg_match()
的调用,例如,如果我有b.com
这样的URL:http://www.b.com/v_OTQ2MDE4MDg.html
,我不必调用preg\u match()
两次
但我仍然不确定这种做法是好还是有更好的方法。为什么不做一个替代呢?(至少在这种情况下如此。) 这是一个
preg_match
,零个strstr
s
而且,在这种情况下,这并不是一个很大的危险,但在应该是点的时候逃离点通常是一个好主意;您的regexp将匹配“http://bacom/v_id_xhtml“
(带有由(\w*?)
捕获的“id”
)
如果你不能制作“一个模式适合所有人”(如果你有很多选择,这实际上是个坏主意,因为你的易读性会下降),使用一个模式来提取站点名称,然后对其进行切换。然后,无论有多少个模式,它都将是两个
preg_match
es和零个str
s。为什么不做一个替换呢?(至少在这种情况下如此。)
这是一个preg_match
,零个strstr
s
而且,在这种情况下,这并不是一个很大的危险,但在应该是点的时候逃离点通常是一个好主意;您的regexp将匹配“http://bacom/v_id_xhtml“
(带有由(\w*?)
捕获的“id”
)
如果你不能制作“一个模式适合所有人”(如果你有很多选择,这实际上是个坏主意,因为你的易读性会下降),使用一个模式来提取站点名称,然后对其进行切换。然后,无论您有多少个模式,它将只有两个
preg_match
es和零个strstr
s。有关regex
的帮助:有关regex
的帮助:谢谢,我已经解决了这个问题。谢谢,我已经解决了这个问题。
'#^http://(?:a\.com/id|b\.com/v)_(\w*?)\.html$#'