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