由于脚本中的限制,我遇到了一个问题,我需要确保一个字符串匹配两个正则表达式模式中的一个,而只调用一次preg_match()
。在一个preg_match中匹配两个正则表达式
下面是我的一些代码:
public static function get_file_host_from_link($link)
{
foreach(Filehosts::$file_hosts as $key => $val)
{
if(preg_match("#{$val["regex"]}#", $link))
{
// We have a match, return this file host information
return $key;
}
}
// We've looped through all the file hosts and it hasn't matched,
// return false
return false;
}
现在,随着配套Fileserve.com URL的是,可以有两种有效的URL结构的问题。其中之一是:
http://www.fileserve.com/file/aHd8AHD
另:
http://www.fileserve.com/file/zR8VJVM/file_name.zip
此刻,我可以用这个正则表达式匹配第一个结构完美的罚款:^http://www.fileserve.com/file/[a-zA-Z0-9]+$
但我也需要搭配其他URL结构使用这样的东西:http://www.fileserve.com/[a-zA-Z0-9]+/[a-zA-Z0-9_-\.]+$
。我如何使用现有的代码执行此操作,仅调用preg_match()
一次?我想过这样的事情:
(^http://www.fileserve.com/file/[a-zA-Z0-9]+$|http://www.fileserve.com/[a-zA-Z0-9]+/[a-zA-Z0-9_-\.]+$)
这在我的知识是指“匹配第一个正则表达式或第二个”,但我不知道这是否会工作。
谢谢!
你试过了吗? – 2011-05-24 19:43:42