php 5.3.2 и флаг htmlentities ENT_XML1

Мы используем PHP версии 5.3.2 с FastCGI под Lighttpd 1.4.26:

$ /usr/lib/cgi-bin/php5 -v
PHP 5.3.2-1ubuntu4.20 with Suhosin-Patch (cgi-fcgi) (built: Jul 15 2013 17:10:44)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with XCache v1.3.0, Copyright (c) 2005-2009, by mOo

У меня есть скрипт php, который генерирует уведомление в журнал ошибок веб-сервера Lighttpd:

2013-08-30 14:11:46: (mod_fastcgi.c.2711) FastCGI-stderr: PHP Notice:  
Use of undefined constant ENT_XML1 - assumed 'ENT_XML1' in 
/var/www/request.php on line 719

Сценарий в этой строке вызывает htmlentities():

htmlentities($xml, ENT_QUOTES | ENT_XML1, 'UTF-8')

В документации по htmlentities () говорится, что константа ENT_XML1 была добавлена ​​в версии 5.4.0, поэтому мне интересно, как версия 5.3.2 знает, что "принять ENT_XML1" в качестве значения по умолчанию? Релиз 5.3.2 возможно добавил это? Это не выскочило на меня в PHP5 ChangeLog.

Примечание: скрипт, по-видимому, конвертирует html-сущности в строку $xml.

1 ответ

Решение

Полученная ошибка на самом деле означает, что php не распознает ENT_XML1 как константу и поэтому преобразует ее в строку 'ENT_XML1'. htmlentities не делает то, что вам нужно, потому что вы не передаете ему правильные константы флагов

htmlentities(ENT_QUOTES | 'ENT_XML1')

не то же самое, что

htmlentities(ENT_QUOTES | ENT_XML1)

Другие вопросы по тегам