Example listing
Appendices
PHP Manual

# Changelog

The following changes have been made to functions of bundled extensions.

Version | Function | Description
--- | --- | ---
5.5.3/5.4.19 | pg_delete | Direct SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
| pg_insert | Direct SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
| pg_select | Direct SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
| pg_update | Direct SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
5.5.2 | DOMDocument::schemaValidate | Added the flags parameter
| DOMDocument::schemaValidateSource | Added the flags parameter
5.5.1 | hex2bin | A warning is thrown if the input string is invalid hexadecimal string.
| pg_unescape_bytea | A warning is thrown if the input string is invalid.
5.5.0/PECL 3.0.0 | IntlDateFormatter::create | An IntlCalendar object is allowed for calendar. Objects of type IntlTimeZone and DateTimeZone are allowed for timezone. Invalid timezone identifiers (including empty strings) are no longer allowed for timezone. If NULL is given for timezone, the timezone identifier given by date_default_timezone_get will be used instead of ICUʼs default.
| IntlDateFormatter::format | Support for providing IntlCalendar objects to the value parameter was added.
| IntlDateFormatter::setCalendar | It became possible to pass an IntlCalendar object.
5.5.0 | curl_setopt | Added the cURL resource as the first argument to the CURLOPT_PROGRESSFUNCTION callback.
| curl_setopt | Introduced CURLOPT_SHARE.
| empty | empty now supports expressions, rather than only variables.
| gd_info | WebP Support added.
| imagerotate | This function is now affected by the interpolation method set by the imagesetinterpolation function.
| iterator_to_array | iterator_to_array gained support for key types other than integer and string when the use_keys parameter is enabled.
| json_encode | depth parameter was added.
| mysql_connect | This function will generate an E_DEPRECATED error.
| mysql_db_name | The mysql_list_dbs function is deprecated, and emits an E_DEPRECATED level error.
| mysql_pconnect | This function will generate an E_DEPRECATED error.
| mysql_tablename | The mysql_tablename function is deprecated, and emits an E_DEPRECATED level error.
| pack | The "Z" code was added with equivalent functionality to "a" for Perl compatibility.
| php_logo_guid | php_logo_guid has been removed from PHP.
| phpinfo | Logo GUIDs were replaced with data URIs, and so turning off expose_php now has no effect on the result of phpinfo(). Credits are also now embedded within the output itself instead of linked.
| preg_replace | The /e modifier is deprecated. Use preg_replace_callback instead. See the PREG_REPLACE_EVAL documentation for additional information about security risks.
| set_error_handler | error_handler now accepts NULL.
| set_exception_handler | Previously, if NULL was passed then this function returned TRUE. It returns the previous handler since PHP 5.5.0.
| setcookie | A Max-Age attribute is now included in the Set-Cookie header sent to the client.
| setrawcookie | A Max-Age attribute is now included in the Set-Cookie header sent to the client.
| unpack | Changes were made to bring this function into line with Perl: The "a" code now retains trailing NULL bytes. The "A" code now strips all trailing ASCII whitespace (spaces, tabs, newlines, carriage returns, and NULL bytes). The "Z" code was added for NULL-padded strings, and removes trailing NULL bytes.
| zend_logo_guid | zend_logo_guid has been removed from PHP.
| mysqli::commit | Added flags and name parameters.
| mysqli::options | The MYSQLI_SERVER_PUBLIC_KEY option was added.
| mysqli::rollback | Added flags and name parameters.
| SoapClient::SoapClient | New ssl_method option.
5.4.8 | assert | The description parameter was added. The description is also now provided to a callback function in ASSERT_CALLBACK mode as the fourth argument.
5.4.7 | parse_url | Fixed host recognition when scheme is omitted and a leading component separator is present.
5.4.1 | hex2bin | A warning is thrown if the input string is of odd length. In PHP 5.4.0 the string was silently accepted, but the last byte was truncated.
5.4.0/PECL 2.0.0b1 | idn_to_ascii | Added the parameters variant and idna_info; UTS #46 support.
| idn_to_utf8 | Added the parameters variant and idna_info; UTS #46 support.
5.4.0 | DOMDocument::loadHTML | Added options parameter.
| DOMDocument::loadHTMLFile | Added options parameter.
| apache_child_terminate | This function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
| apache_request_headers | This function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
| apache_response_headers | This function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
| array_combine | Previous versions issued E_WARNING and returned FALSE for empty arrays.
| array_multisort | The SORT_NATURAL and SORT_FLAG_CASE were added to array1_sort_flags as possible sort flags.
| date_default_timezone_get | The TZ environment variable is no longer used to guess the timezone.
| date_default_timezone_get | The timezone is no longer guessed from information available through the operating system as the guessed timezone can not be relied on.
| debug_backtrace | Added the optional parameter limit.
| debug_print_backtrace | Added the optional parameter limit.
| dns_get_record | Added raw parameter.
| empty | Checking non-numeric offsets of strings returns TRUE.
| error_reporting | E_STRICT became part of E_ALL.
| filter_input_array | Added add_empty parameter.
| filter_var_array | Added add_empty parameter.
| get_html_translation_table | The default value for the encoding parameter was changed to UTF-8.
| get_html_translation_table | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| get_magic_quotes_gpc | Always returns FALSE because the magic quotes feature was removed from PHP.
| get_magic_quotes_runtime | Always returns FALSE because the magic quotes feature was removed from PHP.
| getallheaders | This function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
| gzcompress | Added encoding parameter.
| gzdeflate | Added encoding parameter.
| gzencode | FORCE_DEFLATE now generates RFC 1950 compliant output.
| hash | The tiger algorithm now uses big-endian byte ordering.
| hash_algos | Support for joaat, fnv132 and fnv164 was added. Support for Salsa10 and Salsa20 was removed.
| html_entity_decode | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| html_entity_decode | Default encoding changed from ISO-8859-1 to UTF-8.
| htmlentities | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| htmlentities | The default value for the encoding parameter was changed to UTF-8.
| htmlspecialchars | The default value for the encoding parameter was changed to UTF-8.
| htmlspecialchars | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| htmlspecialchars_decode | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
| http_build_query | The enc_type parameter was added.
| imagecolorset | The alpha parameter was added.
| isset | Checking non-numeric offsets of strings now returns FALSE.
| json_decode | The options parameter was added.
| json_encode | JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, and JSON_UNESCAPED_UNICODE options were added.
| mb_encode_numericentity | Added is_hex parameter.
| number_format | This function now supports multiple bytes in dec_point and thousands_sep. Only the first byte of each separator was used in older versions.
| ob_start | The third parameter of ob_start changed from a boolean parameter called erase (which, if set to FALSE, would prevent the output buffer from being deleted until the script finished executing) to an integer parameter called flags. Unfortunately, this results in an API compatibility break for code written prior to PHP 5.4.0 that uses the third parameter. See the flags example for an example of how to handle this with code that needs to be compatible with both.
| ob_start | A chunk size of 1 now results in chunks of 1 byte being sent to the output buffer.
| openssl_decrypt | The raw_output was changed to options.
| openssl_encrypt | The raw_output was changed to options.
| preg_match_all | The matches parameter became optional.
| scandir | sorting_order constants were added. Any nonzero value caused descending order in previous versions. So for all PHP versions, use 0 for ascending order, and 1 for descending order. An option for SCANDIR_SORT_NONE behavior did not exist prior to PHP 5.4.0.
| session_set_save_handler | Added SessionHandlerInterface for implementing session handlers and SessionHandler to expose internal PHP session handlers.
| snmp_set_valueretrieval | Constants SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY may be combined with SNMP_VALUE_OBJECT resulting different way of representing contents of value array element in return value of GET-function. If no SNMP_VALUE_{PLAIN,LIBRARY} constant is accompanying SNMP_VALUE_OBJECT, SNMP_VALUE_LIBRARY is used. Prior to 5.4.0 SNMP_VALUE_OBJECT effecively meant SNMP_VALUE_OBJECT|SNMP_VALUE_PLAIN.
| sort | Added support for SORT_NATURAL and SORT_FLAG_CASE as sort_flags
| Phar::setStub | Added len parameter.
| PharData::setStub | Added len parameter.
| SimpleXMLElement::getDocNamespaces | Added from_root parameter.
| SoapClient::SoapClient | New keep_alive option.
5.4 | grapheme_substr | If length is given and positive and the argument string is shorter than the specified length, all the rest of the string according to start parameter is returned. Previously, FALSE was returned.
5.3.9 | is_a | Added allow_string parameter
| is_subclass_of | Added allow_string parameter
5.3.7 | crypt | Added $2x$ and $2y$ Blowfish modes to deal with potential high-bit attacks.
| is_subclass_of | Added support for class_name to work with interfaces
5.3.6 | DateTime::modify | Absolute date/time statements now take effect. Previously, only relative parts were used.
| DOMDocument::saveHTML | The node parameter was added.
| array_product | The product of an empty array is now 1, when before this function would return 0 for an empty array.
| debug_backtrace | The parameter provide_object changed to options and additional option DEBUG_BACKTRACE_IGNORE_ARGS is added.
| debug_print_backtrace | Added the optional parameter options.
| preg_match | Returns FALSE if offset is higher than subject length.
| preg_match_all | Returns FALSE if offset is higher than subject length.
| PDO_MYSQL DSN | Prior to version 5.3.6, charset was ignored.
5.3.4 | get_html_translation_table | The encoding parameter was added.
| mt_rand | Issues an E_WARNING and returns FALSE if max < min.
| rawurlencode | Tilde characters are no longer encoded when rawurlencode is used with EBCDIC strings.
| sleep | Before PHP 5.3.4, on Windows, sleep always returns NULL when sleep has occurred, regardless of whether the sleep was interrupted or not.
| IntlDateFormatter::format | Support for providing DateTime objects to the value parameter was added.
| mysqli_driver::$report_mode | Changing the reporting mode is now be per-request, rather than per-process.
5.3.3 | DOMXPath::evaluate | The registerNodeNS parameter was added.
| DOMXPath::query | The registerNodeNS parameter was added.
| json_encode | JSON_NUMERIC_CHECK option was added.
| ldap_sasl_bind | Support on Windows was added.
| openssl_decrypt | The iv parameter was added.
| openssl_encrypt | The iv parameter was added.
| parse_url | Removed the E_WARNING that was emitted when URL parsing failed.
5.3.2 (PECL OCI8 1.4) | oci_set_prefetch | Before this release, rows must be >= 1.
5.3.2 | crypt | Added SHA-256 and SHA-512 crypt based on Ulrich Drepper's implementation.
| crypt | Fixed Blowfish behaviour on invalid rounds to return "failure" string ("*0" or "*1"), instead of falling back to DES.
| flock | The automatic unlocking when the file's resource handle is closed was removed. Unlocking now always has to be done manually.
| gmp_init | The base was extended from 2 to 36, to 2 to 62 and -2 to -36.
| gmp_strval | The base was extended from 2 to 36, to 2 to 62 and -2 to -36.
| imap_append | Added INTERNALDATE support to imap_append.
| imap_open | params added
5.3.1 | get_defined_constants | Windows only: Core constants are categorized under Core, previously mhash.
| ibase_query | On success the function now returns TRUE if there were no affected rows, where it previously returned 0 (a zero followed by an empty space).
| rename | rename can now rename files across drives in Windows.
5.3.0 (PECL OCI8 1.3.4) | oci_set_prefetch | Before this release, prefetching was limited to the lesser of rows rows and 1024 * rows bytes. The byte size restriction has now been removed.
5.3.0 | DateTime::__construct | If time contains an invalid date/time format, then an exception is now thrown. Previously an error was emitted.
| DateTime::modify | Changed the return value on success from NULL to DateTime.
| DateTime::setDate | Changed the return value on success from NULL to DateTime.
| DateTime::setISODate | Changed the return value on success from NULL to DateTime.
| DateTime::setTime | Changed the return value on success from NULL to DateTime.
| DateTime::setTimezone | Changed the return value on success from NULL to DateTime.
| DateTimeZone::getTransitions | The optional timestamp_begin and timestamp_end were added.
| DateTimeZone::listIdentifiers | Added the optional what and country parameters.
| DirectoryIterator::__construct | Throws UnexpectedValueException if the path cannot be opened.
| acosh | This function is now available on all platforms
| array_multisort | The SORT_LOCALE_STRING was added to array1_sort_flags as possible sort flags.
| array_reduce | Changed initial to allow mixed, previously integer.
| array_search | As with all internal PHP functions as of 5.3.0, array_search returns NULL if invalid parameters are passed to it.
| asinh | This function is now available on all platforms
| atanh | This function is now available on all platforms
| call_user_func | The interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static.
| call_user_func_array | The interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static.
| checkdnsrr | This function is now available on Windows platforms.
| clearstatcache | Added optional clear_realpath_cache and filename parameters.
| copy | Added context support.
| crypt | PHP now contains its own implementation for the MD5 crypt, Standard DES, Extended DES and the Blowfish algorithms and will use that if the system lacks of support for one or more of the algorithms.
| curl_setopt | Introduced CURLOPT_PROGRESSFUNCTION.
| date_default_timezone_set | Now throws E_WARNING rather than E_STRICT.
| define_syslog_variables | This function now throws an E_DEPRECATED notice.
| dl | dl is now disabled in some SAPIs due to stability issues. The only SAPIs that allow dl are CLI and Embed. Use the Extension Loading Directives instead.
| dns_get_record | This function is now available on Windows platforms.
| dns_get_record | Prior to this release, if the authns parameter was given, the addtl parameter was also required.
| error_reporting | E_DEPRECATED and E_USER_DEPRECATED introduced.
| exif_imagetype | Added icon support.
| expm1 | This function is now available on all platforms
| fgetcsv | The escape parameter was added
| fnmatch | This function is now available on Windows platforms.
| func_get_arg | If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE.
| func_get_arg | This function can now be used in parameter lists.
| func_get_args | If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE.
| func_get_args | This function can now be used in parameter lists.
| func_num_args | If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns -1.
| func_num_args | This function can now be used in parameter lists.
| gd_info | JPG Support attribute renamed to JPEG Support.
| get_cfg_var | get_cfg_var was fixed to be able to return "array" ini options.
| get_class | NULL became the default value for object, so passing NULL to object now has the same result as not passing any value.
| get_defined_constants | Core constants are categorized under Core, previously internal. On Windows, the Core Constants are categorized under mhash.
| get_object_vars | This function now returns NULL if the object isn't an object. Previously FALSE was returned.
| getimagesize | Added icon support.
| getmxrr | This function is now available on Windows platforms.
| getopt | Added support for optional values (specified with "::").
| getopt | Parameter longopts is available on all systems.
| getopt | Added support for "=" as argument/value separator.
| getopt | This function is no longer system dependent, and now works on Windows, too.
| hash_algos | Support for md2, ripemd256, ripemd320, salsa10, salsa20, snefru256 and sha224 was added
| htmlentities | The constant ENT_IGNORE was added.
| htmlspecialchars | The constant ENT_IGNORE was added.
| imagecolorclosesthwb | This function is now available on Windows
| imagefilter | Pixelation support (IMG_FILTER_PIXELATE) was added.
| inet_ntop | This function is now available on Windows platforms.
| inet_pton | This function is now available on Windows platforms.
| ini_get | Previously, the empty string was returned if the configuration option didn't exist. now, FALSE is returned instead.
| ini_get_all | Added details.
| is_a | This function is no longer deprecated, and will therefore no longer throw E_STRICT warnings.
| json_decode | Added the optional depth. The default recursion depth was increased from 128 to 512
| json_encode | The options parameter was added.
| link | This function is now available on Windows platforms (Vista, Server 2008 or greater).
| linkinfo | This function is now available on Windows platforms (Vista, Server 2008 or greater).
| log1p | This function is now available on all platforms
| mb_get_info | The entry "http_output_conv_mimetypes" was made available.
| mcrypt_create_iv | MCRYPT_DEV_RANDOM and MCRYPT_DEV_URANDOM became available on Windows platforms.
| mcrypt_create_iv | It is no longer required to call srand first. This is now done automatically.
| mktime | mktime now throws E_DEPRECATED notice if the is_dst parameter is used.
| mysql_db_query | This function now throws an E_DEPRECATED notice.
| mysql_escape_string | This function now throws an E_DEPRECATED notice.
| nl2br | Added the optional is_xhtml parameter.
| parse_ini_file | Added optional scanner_mode parameter. Single quotes may now be used around variable assignments. Hash marks (#) may no longer be used as comments and will throw a deprecation warning if used.
| pg_lo_create | The optional object_id was added.
| pg_lo_import | The optional object_id was added.
| preg_quote | The - character is now quoted
| property_exists | This function checks the existence of a property independent of accessibility.
| rawurlencode | Now conforms to RFC 3986.
| readlink | This function is now available on Windows platforms (Vista, Server 2008 or greater).
| realpath | Prior to this release, if only the last path component did not exist, realpath would not fail on *BSD systems. realpath now fails in this case.
| register_tick_function | Ticks are now supported on threaded web server modules.
| round | The mode parameter was introduced.
| session_start | If a session fails to start, then FALSE is returned. Previously TRUE was returned.
| setlocale | This function now throws an E_DEPRECATED notice if a string is passed to the category parameter instead of one of the LC_* constants.
| shm_attach | This function now returns a resource instead of an integer.
| socket_create_pair | This function is now re-enabled on Windows platforms.
| spl_autoload_register | Namespaces support was introduced.
| spl_autoload_register | The prepend parameter was added.
| stream_context_create | Added the optional params argument.
| stream_socket_pair | This function is now available on Windows platforms.
| stristr | Added the optional parameter before_needle.
| strlen | Prior versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.
| strstr | Added the optional parameter before_needle.
| strtotime | Prior to PHP 5.3.0, relative time formats supplied to the time argument of strtotime such as this week, previous week, last week, and next week were interpreted to mean a 7 day period relative to the current date/time, rather than a week period of Monday through Sunday.
| strtotime | Prior to PHP 5.3.0, 24:00 was not a valid format and strtotime returned FALSE.
| sybase_connect | The new parameter was added.
| symlink | This function is now available on Windows platforms (Vista, Server 2008 or greater).
| time_nanosleep | This function is now available on Windows platforms.
| time_sleep_until | This function is now available on Windows platforms.
| touch | It became possible to change the modification time of a directory under Windows.
| mysqli::__construct | Added the ability of persistent connections.
| mysqli::query | Added the ability of async queries.
| ReflectionFunction::__construct | name can now be a closure.
| SplObjectStorage::attach | Added the data parameter.
5.2.15 | mysqli_driver::$report_mode | Changing the reporting mode is now be per-request, rather than per-process.
5.2.11 | get_defined_constants | The categorize parameter now operates appropriately. Previously, the categorize parameter was interpreted as !is_null($categorize), making any value other than NULL force the constants to be categorized.
5.2.10 | array_rand | The resulting array of keys is no longer shuffled.
| array_unique | Changed the default value of sort_flags back to SORT_STRING.
| curl_setopt | Introduced CURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.
| ip2long | Prior to this version, ip2long would sometimes return a valid number even if passed an value which was not an (IPv4) Internet Protocol dotted address.
| natsort | Zero padded numeric strings (e.g., '00005') now essentially ignore the 0 padding.
5.2.9 | array_unique | Added the optional sort_flags defaulting to SORT_REGULAR. Prior to 5.2.9, this function used to sort the array with SORT_STRING internally.
5.2.8 | XSLTProcessor::importStylesheet | Accepts SimpleXMLElement again which was broken since PHP 5.2.6.
5.2.7 | error_log | The possible value of 4 was added to message_type.
| parse_ini_file | On syntax error this function will return FALSE rather than an empty array.
| round | The inner workings of round was changed to conform to the C99 standard.
| strtotime | In PHP 5 prior to 5.2.7, requesting a given occurrence of a given weekday in a month where that weekday was the first day of the month would incorrectly add one week to the returned timestamp. This has been corrected in 5.2.7 and later versions.
5.2.6 | fopen | The 'c' and 'c+' options were added
5.2.5 | addcslashes | The escape sequences \v and \f were added.
| debug_backtrace | Added the optional parameter provide_object.
| imagefilter | Alpha support for IMG_FILTER_COLORIZE was added.
5.2.4 | checkdnsrr | TXT type was added.
| get_loaded_extensions | The optional zend_extensions parameter was added
| ldap_first_attribute | The ber_identifier was removed. This is now handled automatically by PHP.
| ldap_next_attribute | The ber_identifier was removed. This is now handled automatically by PHP.
| parse_ini_file | Keys and section names consisting of numbers are now evaluated as PHP integers thus numbers starting by 0 are evaluated as octals and numbers starting by 0x are evaluated as hexadecimals.
| stream_wrapper_register | Added the flags parameter.
5.2.3 | getimagesize | Read errors generated by this function downgraded to E_NOTICE from E_WARNING.
| htmlentities | The double_encode parameter was added.
| htmlspecialchars | The double_encode parameter was added.
| json_decode | The nesting limit was increased from 20 to 128
| XMLWriter::writeElement | The content parameter became optional.
| XMLWriter::writeElementNS | The content parameter became optional.
| PDOStatement::getColumnMeta | table field
5.2.2 - 5.2.6 | substr | If the start parameter indicates the position of a negative truncation or beyond, false is returned. Other versions get the string from start.
5.2.2 | DOMDocument::registerNodeClass | Prior to 5.2.2, a previously registered extendedclass had to be unregistered before being able to register a new class extending the same baseclass.
| ftp_ssl_connect | The function was changed to return FALSE when it can't use an SSL connection, instead of fallbacking to a non-SSL one as previously.
| phpinfo | The "Loaded Configuration File" information was added, when before only "Configuration File (php.ini) Path" existed.
| preg_match | Named subpatterns now accept the syntax (?<name>) and (?'name') as well as (?P<name>). Previous versions accepted only (?P<name>).
| preg_match_all | Named subpatterns now accept the syntax (?<name>) and (?'name') as well as (?P<name>). Previous versions accepted only (?P<name>).
| proc_terminate | Previous versions used to destroy the given process resource.
| token_get_all | Line numbers are returned in element 2
5.2.1 | iterator_to_array | The use_keys parameter was added.
| json_decode | Added support for JSON decoding of basic types.
| memory_get_peak_usage | Compiling with --enable-memory-limit is no longer required for this function to exist.
| memory_get_usage | Compiling with --enable-memory-limit is no longer required for this function to exist.
| mt_srand | The Mersenne Twister implementation in PHP now uses a new seeding algorithm by Richard Wagner. Identical seeds no longer produce the same sequence of values they did in previous versions. This behavior is not expected to change again, but it is considered unsafe to rely upon it nonetheless.
| proc_open | Added the bypass_shell option to the other_options parameter.
5.2.0 | base64_decode | strict added
| curl_multi_info_read | msgs_in_queue was added.
| error_reporting | E_RECOVERABLE_ERROR introduced.
| imagettftext | It is now possible to specify an hexadecimal entity in text.
| imap_open | n_retries added
| imap_reopen | n_retries added
| mb_strrpos | Added the optional parameter offset.
| memory_get_peak_usage | real_usage was added.
| memory_get_usage | real_usage was added.
| openssl_verify | The signature_alg parameter was added.
| pathinfo | The PATHINFO_FILENAME constant was added.
| pg_escape_bytea | connection added
| pg_escape_string | connection added
| session_get_cookie_params | The "httponly" entry was added in the returned array.
| session_set_cookie_params | The httponly parameter was added.
| set_error_handler | The error handler must return FALSE to populate $php_errormsg.
| setcookie | The httponly parameter was added.
| setrawcookie | The httponly parameter was added.
| snmp_set_oid_numeric_print | Since PHP 5.2.0.
| PDOStatement::execute | The keys from input_parameters must match the ones declared in the SQL. Before PHP 5.2.0 this was silently ignored.
| SimpleXMLElement::children | The optional parameter is_prefix was added.
| SimpleXMLElement::__construct | Added the ns and is_prefix parameters.
| SoapServer::SoapServer | Added the typemap option.
| XMLReader::open | encoding and options were added.
| XMLReader::XML | encoding and options were added.
5.1.3 | DirectoryIterator::__construct | Throws RuntimeException if the path is an empty string.
| curl_getinfo | Introduced CURLINFO_HEADER_OUT.
| get_headers | This function now uses the default stream context, which can be set/changed with the stream_context_set_default function.
| http_build_query | Square brackets are escaped.
| imagecolorallocate | Returns FALSE if the allocation failed. Previously -1 was returned.
| imagecolorallocatealpha | Returns FALSE if the allocation failed. Previously -1 was returned.
| imagepng | Added the filters parameter.
| mb_get_info | The entries "mail_charset", "mail_header_encoding", and "mail_body_encoding" were made available.
| SoapClient::__doRequest | The one_way parameter was added.
| XMLReader::getAttribute | Return NULL if no attribute found. Previously, returned an empty string.
5.1.2 | date_default_timezone_set | The function started to validate the timezone_identifier parameter.
| http_build_query | The arg_separator parameter was added.
| imagepng | Added the quality parameter.
| parse_url | Added the component parameter.
| SimpleXMLElement::__construct | Added the options and data_is_url parameters.
5.1.1 | date | There are useful constants of standard date/time formats that can be used to specify the format parameter.
| debug_backtrace | Added the current object as a possible return element.
| gmdate | There are useful constants of standard date/time formats that can be used to specify the format parameter.
5.1.0 | DirectoryIterator::__construct | Throws RuntimeException on error. Previously, threw Exception.
| DOMDocument::save | Added the options parameter
| DOMDocument::saveXML | Added the options parameter
| class_implements | Added the option to pass the class parameter as a string. Added the autoload parameter.
| class_parents | Added the option to pass the class parameter as a string. Added the autoload parameter.
| ctype_digit | Before PHP 5.1.0, this function returned TRUE when text was an empty string.
| curl_setopt | Introduced CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.
| date | Now issues the E_STRICT and E_NOTICE time zone errors.
| date | The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
| date_sunrise | Now issues the E_STRICT and E_NOTICE time zone errors.
| date_sunset | Now issues the E_STRICT and E_NOTICE time zone errors.
| explode | Support for negative limits was added
| file_get_contents | Added the offset and maxlen parameters.
| file_put_contents | Added support for LOCK_EX and the ability to pass a stream resource to the data parameter
| get_parent_class | If called without parameter outside object, this function would have returned NULL with a warning, but now returns FALSE.
| gettimeofday | The return_float parameter was added.
| glob | GLOB_ERR was added
| gmdate | The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
| gmmktime | As of PHP 5.1.0, the is_dst parameter became deprecated. As a result, the new timezone handling features should be used instead.
| idate | Now issues the E_STRICT and E_NOTICE time zone errors.
| imagerotate | ignore_transparent was added.
| intval | Throws E_NOTICE and returns 1, when an object is passed to var.
| localtime | Now issues the E_STRICT and E_NOTICE time zone errors.
| md5_file | Changed the function to use the streams API. It means that you can use it with wrappers, like md5_file('http://example.com/..')
| mktime | Now issues the E_STRICT and E_NOTICE time zone errors.
| mktime | The is_dst parameter became deprecated. Made the function return FALSE on error, instead of -1. Fixed the function to accept the year, month and day to be all passed as zero.
| mktime | When called with no arguments, mktime throws E_STRICT notice. Use the time function instead.
| openssl_pkcs7_verify | The content parameter was added.
| preg_replace | Added the count parameter
| preg_replace_callback | The count parameter was added
| session_regenerate_id | Added the delete_old_session parameter.
| sha1_file | Changed the function to use the streams API. It means that you can use it with wrappers, like sha1_file('http://example.com/..')
| str_word_count | Added the charlist parameter
| stream_copy_to_stream | Added the offset parameter
| stream_filter_append | Prior to PHP 5.1.0, this function returns TRUE on success or FALSE on failure.
| stream_filter_prepend | Prior to PHP 5.1.0, this function returns TRUE on success or FALSE on failure.
| stream_get_contents | The offset was added.
| strftime | Now issues the E_STRICT and E_NOTICE time zone errors.
| strtotime | Now returns FALSE on failure, instead of -1.
| strtotime | Now issues the E_STRICT and E_NOTICE time zone errors.
| substr_compare | Added the possibility to use a negative offset.
| substr_count | Added the offset and the length parameters
| var_export | Possibility to export classes and arrays containing classes using the __set_state() magic method.
| XSLTProcessor::registerPHPFunctions | The restrict parameter was added.
5.0.5 | php_check_syntax | This function was removed from PHP.
5.0.3 | get_class_vars | Depending on the scope, get_class_vars will only return the properties that can be accessed from the current scope.
| is_subclass_of | You may also specify the object parameter as a string (the name of the class)
| php_check_syntax | Calling exit after php_check_syntax resulted in a Segfault.
5.0.2 | array_slice | The optional preserve_keys parameter was added.
| class_exists | No longer returns TRUE for defined interfaces. Use interface_exists.
| get_class_vars | Calling get_class_vars will now expose all the properties as an array, unlike previous behaviour where protected and private properties were prefixed with nul bytes.
| sort | Added SORT_LOCALE_STRING
| strtotime | In PHP 5 up to 5.0.2, "now" and other relative times are wrongly computed from today's midnight. This differs from other versions where it is correctly computed from current time.
5.0.1 | get_class_vars | Calling get_class_vars will expose all properties, as when converting an object to a class.
| php_check_syntax | error_message is passed by reference.
5.0.0 | apache_get_modules | Became available when using Apache 1, or the PHP Apache 2 filter API. Before this time, it was only available when using the Apache 2 handler API.
| apache_get_version | Became available with the Apache 2 filter API.
| array_keys | Added the strict parameter.
| array_merge | The behavior of array_merge was modified in PHP 5. Unlike PHP 4, array_merge now only accepts parameters of type array. However, you can use typecasting to merge other types. See the example below for details. array_merge PHP 5 example <?php $beginning = 'foo'; $end = array(1 => 'bar'); $result = array_merge((array)$beginning, (array)$end); print_r($result); ?> The above example will output: Array ( [0] => foo [1] => bar )
| cal_info | The calendar parameter becomes optional and defaults to "all calendars" if omitted.
| checkdnsrr | AAAA type was added.
| class_exists | The autoload parameter was added.
| com_release | This function was removed.
| curl_setopt | Introduced CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CURLOPT_HTTP200ALIASES.
| dirname | dirname is now binary safe
| empty | Objects with no properties are no longer considered empty.
| error_reporting | E_STRICT introduced (not part of E_ALL).
| extension_loaded | extension_loaded uses the internal extension name to test whether a certain extension is available or not. Most internal extension names are written in lower case but there may be extensions available which also use uppercase letters. Prior to PHP 5, this function compared the names case sensitively.
| fgetss | The length parameter is optional
| file | Prior to PHP 5.0.0 the flags parameter only covered include_path and was enabled with 1
| file | The context parameter was added
| file_get_contents | Added context support.
| file_put_contents | Added context support
| get_class | The object parameter is optional if called from the object's method.
| get_class | The class name is returned in its original notation.
| get_class_methods | As of PHP 5, this function returns the name of the methods as they were declared (case-sensitive). In PHP 4 they were lowercased.
| get_defined_constants | The categorize parameter was added.
| get_defined_vars | The $GLOBALS variable is included in the results of the array returned.
| get_parent_class | The object parameter is optional if called from the object's method.
| html_entity_decode | Support for multi-byte encodings was added.
| ip2long | Prior to this version, ip2long returned -1 on failure.
| is_a | This function became deprecated in favour of the instanceof operator. Calling this function will result in an E_STRICT warning.
| is_executable | is_executable became available with Windows
| jdtojewish | The fl parameter was added.
| mb_encode_mimeheader | The indent parameter was added.
| mb_send_mail | The Content-Type and Content-Transfer-Encoding headers may be redefined as of PHP 5.0.0. Before this time, the values defined by mb_language are always used.
| md5 | The raw_output parameter was added.
| md5_file | Added the raw_output parameter
| microtime | The get_as_float parameter was added.
| mkdir | The recursive parameter was added
| mkdir | As of PHP 5.0.0 mkdir can also be used with some URL wrappers. Refer to for a listing of which wrappers support mkdir
| mysql_fetch_object | Added the ability to return as a different object.
| opendir | path supports the ftp:// URL wrapper.
| openssl_pkcs7_encrypt | The cipherid parameter was added.
| openssl_sign | The signature_alg parameter was added.
| parse_ini_file | Values enclosed in double quotes can contain new lines.
| pg_fetch_object | class_name and params were added. The old form with result_type still exists for backwards compatibility.
| proc_open | Added the cwd, env and other_options parameters.
| range | The optional step parameter was added.
| realpath | Prior to this release, a blank or NULL path would cause realpath to return the directory name of the script.
| rename | rename can now also be used with some URL wrappers. Refer to for a listing of which wrappers support rename.
| rmdir | As of PHP 5.0.0 rmdir can also be used with some URL wrappers. Refer to for a listing of which wrappers support rmdir.
| session_id | The , (comma) and - (minus) characters are allowed in the file session handler.
| set_error_handler | The error_types parameter was introduced.
| sha1 | The raw_output parameter was added.
| sha1_file | Added the raw_output parameter
| socket_create | The AF_INET6 constant was added.
| str_ireplace | The count parameter was added.
| str_replace | The count parameter was added.
| stream_get_meta_data | The following entries were added in the returned array: mode, seekable, and uri.
| strip_tags | strip_tags is now binary safe.
| strrpos | The needle may now be a string of more than one character.
| strrpos | The offset parameter was introduced.
| strtotime | Microseconds began to be allowed, but they are ignored.
| uniqid | The prefix parameter was made optional.
| unlink | As of PHP 5.0.0 unlink can also be used with some URL wrappers. Refer to for a listing of which wrappers support unlink.
| usleep | This function now works on Windows systems.
| mysqli_result::fetch_object | Added the ability to return as a different object.

Example listing
Appendices
PHP Manual