CodeIgniterのURIセグメントシステムで奇妙な問題が発生しました。
私がこのURLを持っているとき:
http://www.mywebsite.com/forums/category_name/forum_name/topic_name ..(はい、名前には2つのドットがあります)
今私はPHPでこれを行います:
$topic = $this->uri->segment(4);
>>> echo $topic: 'topic_name..'
これは完全に機能します。しかし、ここに奇妙なことがあります。次のようにURLに返信を追加すると、次のようになります。
http://www.mywebsite.com/forums/category_name/forum_name/topic_name../reply
ここで、PHPコードを再度実行します。
$topic = $this->uri->segment(4);
>>> echo $topic: 'topic_name '
ご覧のとおり、突然「..」が「」に置き換えられます(1つのスペース、2つでもないのはなぜですか?)。
ドット( "。")の後にセグメントを追加したときに、URIセグメントメソッドが何かをサニタイズする可能性があるかどうかは誰にもわかりません。奇妙なことに、URLの後ろにスペースを入れて手動で修正すると、trim()の後で、CodeIgniterが今回はそれらに触れていないように見える「..」が残っているため、再び機能します。
http://www.mywebsite.com/forums/category_name/forum_name/topic_name..%20/reply
$topic = $this->uri->segment(4);
> echo $topic: 'topic_name.. '
>>> echo trim($topic): 'topic_name..'