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)