2016-05-17 103 views
0

我有一些網站使用最古老的CodeIgniter版本在php5上編寫。
我的配置:PHP字符串編碼

$config['charset'] = 'windows-1251'; 

在一些地方,我有2個字符串值。

  1. $this->uri->segment(2)
  2. "{shortname}" . ".html"

我想對它們進行比較,並做一些事情,如果他們是平等的。
但我得到了地獄......

現在,我有一些看法的一些代碼:

<?=(strcmp($this->uri->segment(2), "{shortname}" . ".html") == 0) ? 
     'test' : 
     'notest' ?><br/> 
<?=mb_detect_encoding($this->uri->segment(2))?><br/> 
<?=mb_detect_encoding("{shortname}" . ".html")?><br/> 
<?=base64_encode(mb_convert_encoding($this->uri->segment(2), 'UTF-8'))?><br/> 
<?=base64_encode(mb_convert_encoding("{shortname}" . ".html", 'UTF-8'))?><br/> 
<?=$this->uri->segment(2)?><br/> 
<?="{shortname}" . ".html"?><br/> 

因此,我有:

notest 
ASCII 
ASCII 
cml6b2dyYWZpamEtdGlyYXpoaXJvdmFuaWUuaHRtbA== 
e3Nob3J0bmFtZX0uaHRtbA== 
rizografija-tirazhirovanie.html 
rizografija-tirazhirovanie.html 

如何需要編碼/解碼/比較它會工作?

回答

3

base64_decode("e3Nob3J0bmFtZX0uaHRtbA==") = {shortname}.html

{shortname}佔位符不被替換。我不使用CodeIgniter,但也許你喜歡使用{$shortname}? (插入$shortname變量值)

實施例:

echo strcmp($this->uri->segment(2), "$shortname.html") == 0) ? 'test' : 'notest'; 
+0

是!這是原因。它僅在直接使用時才被替換:<?= {shortname}?>。但是,如果我將它作爲參數傳遞,它不會取代...我把條件放在控制器中。非常感謝你! –