スペース、感嘆符、一重引用符などを含む文字列を urlencode してページにエコーすると、感嘆符を含む文字列が期待どおりにエンコードされていることがわかります。ただし、エンコードされた文字列を<a href=
感嘆符に入れると、一重引用符がエンコードされなくなり、CI は URL で許可されていない文字に関するエラーをスローします。
<?
$string = 'Hello\'s world!';
$url = urlencode(stringtolower($string));
// echo it
echo $url; // outputs: hello%27s+world%21
?>
<a href="<? echo base_url() . $url; ?>">Link</>' <!-- outputs: ./hello's+world! -->
悪魔はここで何をしているのですか?