PHP preg_match 得到我的一部分 url

PHP preg_match to get part of my url

我正在尝试使用 PHP preg_match 获取我的 url 的一部分,但它不起作用。我遵循了一些说明,但没有成功。

这是我目前所拥有的。

$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

会return

3542re6s

非常感谢任何帮助。

提前致谢 C

您的正则表达式缺少 /d/ 目录。另外,由于下一级既包含数字又包含字母,因此不能使用 \d+ 来匹配它。试试这个:

$pattern = '#//(?:(?:chris|terry|jack)\.)?mydomain\.com/d/([^/]+)(?|/)#';

DEMO at regex101
PHP demo at ideone

当您编写正则表达式来匹配路径名时,我建议使用 / 以外的定界符,这样您就不必转义正则表达式中的所有斜杠;我上面用的是#