私はこの文字列を持っています:
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[^\.]*/