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 に答える