2012-07-17 36 views
12

Tôi đang cố tạo một phương thức đơn giản chấp nhận tham số cho htmlspecialchars. Mặc dù tôi nhận được thông báo PHP:Lưu ý: Sử dụng hằng số không xác định ENT_HTML5 - giả định 'ENT_HTML5'

Use of undefined constant ENT_HTML5 - assumed 'ENT_HTML5'

  1. Bất kỳ ý tưởng những gì có thể gây ra điều này?

/**

* 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. Nếu tôi thay đổi: ENT_QUOTES | ENT_HTML5 thành: ENT_QUOTES, tôi nhận được một lỗi khác nhau

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

CẬP NHẬT

Tôi đang sử dụng PHP 5.3 vì vậy đây là lý do cho lỗi HTML5. Nếu tôi thay đổi ENT_QUOTES | ENT_HTML5-ENT_COMPAT | ENT_HTML401 tôi nhận được cùng một loại lỗi:

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

+0

Bạn đang sử dụng phiên bản PHP nào? ENT_HTML5 dành cho php 5.4 trở lên ... –

Trả lời

20

ENT_HTML5, ENT_HTML401, và một số người khác đã được thêm vào trong PHP phiên bản 5.4 according to the manual. Đối với các phiên bản trước đó, các hằng số này không được xác định và PHP sẽ tự động giả định rằng các hằng số không xác định là lập trình "phiếu" và chuyển đổi chúng thành chuỗi.

Các vấn đề liên quan