2012-07-17 10 views
12

Estoy tratando de crear un método simple que acepte los parámetros para htmlspecialchars. A pesar de que estoy recibiendo notificación PHP:Aviso: uso de constante indefinida ENT_HTML5 - asumida 'ENT_HTML5'

Use of undefined constant ENT_HTML5 - assumed 'ENT_HTML5'

  1. Alguna idea de lo que podría estar causando esto?

/**

* 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. Si cambio: ENT_QUOTES | ENT_HTML5 en: ENT_QUOTES, me sale un error diferente

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

ACTUALIZACIÓN

Estoy usando PHP 5.3 así que esta es la razón del error de HTML5. Si cambio ENT_QUOTES | ENT_HTML5-ENT_COMPAT | ENT_HTML401 consigo el mismo tipo de error:

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

+0

¿Qué versión de PHP estás usando? ENT_HTML5 es para php 5.4 y más ... –

Respuesta

20

ENT_HTML5, ENT_HTML401, y algunos otros fueron agregados en PHP versión 5.4 according to the manual. Para versiones anteriores, esas constantes no están definidas, y PHP asumirá automáticamente que las constantes indefinidas están programando "deslizamientos" y las convierten en cadenas.