2012-07-17 114 views
12

我想創建一個接受htmlspecialchars參數的簡單方法。雖然我得到PHP的通知:注意:使用未定義的常量ENT_HTML5 - 假定爲'ENT_HTML5'

Use of undefined constant ENT_HTML5 - assumed 'ENT_HTML5'

  1. 任何想法可能是造成這個?

/**

* Encode string. 
* 
* @param array/string $value 
* @param string $param 
* @return string 
*/ 
protected function escape($mixed, $params) { 

    $defaults = array('flags' => ENT_QUOTES | ENT_HTML5, 'charset' => 'UTF-8'); 
    $params = array_merge($defaults, $params); 

    if (is_array($mixed)) { 
     foreach($mixed as $key => $value) { 
      $mixed[$key] = $this->escape($value, $params['flags'], $params['charset']); 
     } 
    } elseif (is_string($mixed)) { 
     $mixed = htmlspecialchars($mixed, $params['flags'], $params['charset']); 
    } 

    return $mixed; 
} 
  1. 如果我改變:ENT_QUOTES | ENT_HTML5爲:ENT_QUOTES,我得到一個不同的錯誤

Warning: htmlspecialchars() expects parameter 2 to be long, string given

UPDATE

我使用PHP 5.3,所以這是HTML5錯誤的原因。如果我改變ENT_QUOTES | ENT_HTML5ENT_COMPAT | ENT_HTML401我得到相同類型的錯誤:

Notice: Use of undefined constant ENT_HTML401 - assumed 'ENT_HTML401'

+0

您使用的是什麼版本的PHP? ENT_HTML5適用於PHP 5.4及更高版本... – 2012-07-17 13:15:33

回答

20

ENT_HTML5,ENT_HTML401,並且在PHP 5.4版本according to the manual添加一些人。對於早期版本,這些常量是未定義的,並且PHP將自動假定未定義的常量正在編程「滑移」並將它們轉換爲字符串。

相關問題