2012-07-17 11 views
12

Sto tentando di creare un metodo semplice che accetta i parametri per htmlspecialchars. Anche se io sono sempre preavviso PHP:Avviso: utilizzo della costante non definita ENT_HTML5 - presupposto 'ENT_HTML5'

Use of undefined constant ENT_HTML5 - assumed 'ENT_HTML5'

  1. Tutte le idee che cosa potrebbe essere la causa?

/**

* 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. Se cambio: ENT_QUOTES | ENT_HTML5 in: ENT_QUOTES, ottengo un errore diverso

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

UPDATE

Sto usando PHP 5.3 quindi questo è il motivo dell'errore HTML5. Se cambio ENT_QUOTES | ENT_HTML5-ENT_COMPAT | ENT_HTML401 ottengo lo stesso tipo di errore:

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

+0

Quale versione di PHP stai usando? ENT_HTML5 è per php 5.4 e versioni successive ... –

risposta

20

ENT_HTML5, ENT_HTML401, e alcuni altri sono stati aggiunti in PHP versione 5.4 according to the manual. Per le versioni precedenti quelle costanti non sono definite e PHP assumerà automaticamente che le costanti non definite programmino "slittamenti" e li convertano in stringhe.

Problemi correlati