conversions of filename entries.
Normal path conversions will simply use this converter,
Certain other protocols (such as http) which specify a
required character set (utf8), may override the conversion
by defining a path_encode() and/or path_decode() wrapper ops method.
update userspace function file_get_contents().
Note: fgc()'s second parameter (use_include_path) has been changed
to be a bitmask "flags" parameter instead.
For the most commonly used values (TRUE, 1) this will continue functioning
as expected since the value of FILE_USE_INCLUDE_PATH is (coincidentally) 1.
The impact to other values should be noted in the migration6 guide.
This change makes it possible to allow fgc() to return binary file
contents (default) or unicode transcoded contents (using FILE_TEXT flag).
This updates userspace functions fpassthru() and readfile()
UG(output_encoding) is used by php_stream_passthru() to translate
unicode stream contents back to an outputable character set.
Note: readfile()'s second parameter (use_include_path) has been changed
to be a bitmask "flags" parameter instead.
For the most commonly used values (TRUE, 1) this will continue functioning
as expected since the value of FILE_USE_INCLUDE_PATH is (coincidentally) 1.
The impact to other values should be noted in the migration6 guide.
This change makes it possible to allow readfile() to output binary file
contents (default) or unicode transcoded contents (using FILE_TEXT flag).
This moves unicode conversion to the filter layer
(rather than at the lower streams layer)
unicode_filter.c has been moved from ext/unicode to main/streams
as it's an integral part of the streams unicode conversion process.
There are now three ways to set encoding on a stream:
(1) By context
$ctx = stream_context_create(NULL,array('encoding'=>'latin1'));
$fp = fopen('somefile', 'r+t', false, $ctx);
(2) By stream_encoding()
$fp = fopen('somefile', 'r+');
stream_encoding($fp, 'latin1');
(3) By filter
$fp = fopen('somefile', 'r+');
stream_filter_append($fp, 'unicode.from.latin1', STREAM_FILTER_READ);
stream_filter_append($fp, 'unicode.to.latin1', STREAM_FILTER_WRITE);
Note: Methods 1 and 2 are convenience wrappers around method 3.
non-unicode with ucwords. There is also an implementation for unicode ucwords
but that returns different results then strtotitle as it uppercases the
first character of every word, and doesn't *titlecase* a word. The test case
shows that.
write the uppercased character to the buffer, but only returns the length of
the uppercased letter as per
http://icu.sourceforge.net/apiref/icu4c/ustring_8h.html#a50.
- Updated is_string():
If Unicode semantics is turned on, return "true" for Unicode strings only.
If Unicode semantics is turned off, return "true" for native strings only.
- Added is_binary() function that returns "true" for native strings only.
- Added first implementation of upgraded strtr function. It works except if
combining sequences or surrogates are used in the non-array method of calling
this function.
- In the first one we were calculating the tmp_len wrong which made the
u_strFromUTF32() function try to convert too many code points.
- The second issue was a bit more subtle as the "what" string wasn't
duplicated but still modified. This string is passed as data to the
function and this kind of data the engine tries to free when the function
ends. Because we were re-allocating the data the original memory location
was already freed resulting in a double free error when the engine tries to
free the argument as it was passed to the function.