2014-03-28 64 views
0

存在爲什麼檢查是否值在陣列中存在這一個PHP是好的PHP檢查是否從HTML表單值(帶重音)的陣列

<option value="Citta">Citta</option> 
$rp = array ('Citta'); 
if (!in_array($_POST['r'], $rp)) { 
     header('location:'.$_SERVER['PHP_SELF'].'?errore'); 
     exit; 
} 

,這一次反而顯示錯誤的標題和退出?

<option value="Citt&agrave;">Citt&agrave;</option> 
$rp = array ('Citt&agrave;'); 
if (!in_array($_POST['r'], $rp)) { 
     header('location:'.$_SERVER['PHP_SELF'].'?errore'); 
     exit; 
} 

感謝您的任何建議。

+0

使用'isset()'來檢查數組是否設置 –

+0

我沒有發佈所有代碼。無論如何,我當然使用isset。 –

+0

檢查'var_dump($ _ POST)'以查看實際發佈的內容。 – Passerby

回答

0

因爲in_array()實際上是比較&agrave;字面上是否也存在於字符串中,所以比較是以區分大小寫的方式完成的。嘗試使用UTF-8編碼字符串並加以比較,它的工作:

<option value="Città">Città</option> 
<?php 
     $rp = array ('Città'); 
     if (!in_array($_POST['r'], $rp)) { 
      header('location:'.$_SERVER['PHP_SELF'].'?errore'); 
      exit; 
     } 

?> 
+0

你是什麼意思「嘗試使用UTF-8編碼的字符串」?如果我嘗試使用上面的代碼不起作用(同一個錯誤的標題和退出)。 –

0

,如果你的代碼添加此元語句將<head>區HTML5

<meta charset="utf-8"> 

...或者,如果HTML藉此4.x的

<meta http-equiv="content-type" content="text/html; charset=utf-8"> 

然後你可以根據@ bodi0的回答修改代碼:

<option value="Città">Città</option> 
<?php 
    $rp = array ('Città'); 
    if (!in_array($_POST['r'], $rp)) { 
     header('location:'.$_SERVER['PHP_SELF'].'?errore'); 
     exit; 
    } 
?>