我有这个字符串:
http://localhost/whatever/index.php/something/cms-abc.html?___SID=U
我想从该字符串中获取cms-abc 。我试过:
/cms-.+/
但这也会给我 cms-abc 背后的东西。我该如何解决这个问题?
谢谢 :)
不需要正则表达式:
$url = 'http://localhost/whatever/index.php/something/cms-abc.html?___SID=U';
$parts = parse_url($url);
echo basename($parts['path']);
甚至只是
echo basename(parse_url($url, PHP_URL_PATH));
你是什么意思“在cms-abc后面”?您的正则表达式应与此匹配:
/cms-abc.html?__SID=U
你的意思是你不想要问号后面的东西吗?然后将 替换为.
“除问号以外的任何字符”,即[^?]
.
最后,如果您要在 PHP 中拆分 URL,请查看该parse_url()
函数。它存在,它是您不必编写的代码,它无需测试即可工作,与您编写的代码不同。
“我想从那个字符串中得到cms-abc 。” 因此,从/包括“cms”到(但不包括)点的所有内容:
/cms[^\.]*/