rawurlencode()和urlencode()在CodeIgniter中不起作用

I am trying to encode a string into a safe url for generic purposes, and neither rawurlencode() nor urlencode() work when using CodeIgniter. I have used them and they work pefectly fine with straight PHP, but for whatever reason, it doesn't work. I haven't been able to find any others with this problem and thus no solution.

Code:

<a href="/search/degree/<?=rawurlencode($row->degree)?>" class="element_link"><?=$row->degree?></a>

It just gets passed as plain text with spaces unescaped and everything.

I was expecting the outcome I was able to get with this:

<?php echo rawurlencode('http://kchason.com'); ?>

Merited: http%3A%2F%2Fkchason.com

But: <a href="/search/degree/<?=rawurlencode($row->degree)?>" class="element_link"><?=$row->degree?></a>

Gives me for example: 'localhost/http://kchason.com' which obviously isn't safe and doesn't work.

I know this is an old question. But I was dealing with the same issue. What I have done is:

Encode

<?php echo urlencode(base64_encode('http://kchason.com')); ?>

Decode

<?php echo urldecode(base64_decode('http://kchason.com')); ?>

You use base64_encode to get rid of any URL parts that will cause problems with Codeigniter, and then you use urlencode to encode any = that base64_encode adds to the end of its output.