PHP preg_match来获取我的网址的一部分

时间:2015-09-11 01:15:56

标签: php regex preg-match

我正在尝试使用PHP preg_match获取我的网址的一部分,但它无法正常工作。我遵循了一些指示,但没有运气。

这是我到目前为止所做的。

$url = 'http://chris.mydomain.com/d/3542re6s/somthing.html';
$pattern = '/\/\/(sub1\.)?mydomain.com\/(\d+)($|\/)/';
preg_match($pattern, $url, $matches);
if (count($matches)){
  return $matches[2];
}

我还需要它来验证chris,terry和jack。

更新:

例如: chris.mydomain.com terry.mydomain.com jack.mydomain.com

我需要获得第二个查询

例如:

chris.mydomain.com/d/3542re6s/somthing.html

将返回

3542re6s

非常感谢任何帮助。

提前致谢 ç

1 个答案:

答案 0 :(得分:3)

您的正则表达式缺少//instead of sender and e, usually you should use different names //because usually you are running this code in an event handler //that has sender and e parameters itself sb.Click += (object senderObject, EventArgs eventArgs) => { //using (SimpleButton)sender you can find which botton is clicked }; 目录。此外,由于下一级包含数字和字母,因此您无法使用/d/来匹配它。试试这个:

\d+

DEMO at regex101
PHP demo at ideone

当你编写一个正则表达式来匹配路径名时,我建议使用除$pattern = '#//(?:(?:chris|terry|jack)\.)?mydomain\.com/d/([^/]+)(?|/)#'; 以外的分隔符,这样你就不必转义正则表达式中的所有斜杠;我上面使用了/