0

我有这个字符串:

http://localhost/whatever/index.php/something/cms-abc.html?___SID=U

我想从该字符串中获取cms-abc 。我试过:

/cms-.+/

但这也会给我 cms-abc 背后的东西。我该如何解决这个问题?

谢谢 :)

4

3 回答 3

4

不需要正则表达式:

$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));
于 2012-12-06T15:19:01.990 回答
1

你是什​​么意思“在cms-abc后面”?您的正则表达式应与此匹配:

/cms-abc.html?__SID=U

你的意思是你不想要问号后面的东西吗?然后将 替换为.“除问号以外的任何字符”,即[^?].

最后,如果您要在 PHP 中拆分 URL,请查看该parse_url()函数。它存在,它是您不必编写的代码,它无需测试即可工作,与您编写的代码不同。

http://php.net/manual/en/function.parse-url.php

于 2012-12-06T15:20:06.490 回答
1

“我想从那个字符串中得到cms-abc 。” 因此,从/包括“cms”到(但不包括)点的所有内容:

/cms[^\.]*/
于 2012-12-06T15:21:01.130 回答