Thank you Peter Albertsson for presenting that!
After spending more than eight hours tracking down two specific bugs in my mbstring-func_overloaded environment I have learned a very important lesson:
Many developers rely on strlen to give the amount of bytes in a string. While mb-overloading has very many advantages, the most hard-spotted pitfall must be this issue.
Two examples (from the two bugs found earlier):
1. Writing a string to a file:
= 'string with utf-8 chars åèä - doo-bee doo-bee dooh';
$fp = fopen($this->_file, 'wb');
if (
$fp) {
$len = strlen($str);
fwrite($fp, $str, $len);

PS This is found i the PEAR::Cache_Lite package (Lite.php) - Reported
2. Iterating through a string's characters:
= 'string with utf-8 chars åèö - doo-bee doo-bee dooh';
$newStr = ';
for (
$i = 0; $i < strlen($str); $i++) {
$newStr .= $str[$i];

Both of these situations will fail to save / store the last characters in $str. This can be very hard to spot and can be especially fatal for say serialized strings, xml etc.
So, try to avoid these situations to support overloaded environments, and remeber Peter Albertssons remark if you find problems under such an environment.

Make sure you use mbstrlen and mbsubstr, using the '8bit' character set mode to prevent mbstring.funcoverload issues. IVs should be generating using a CSPRNG; If you're using mcryptcreateiv, DO NOT USE MCRYPTRAND! Php apcu. Also check out randomcompat. Unless you're using an AEAD construct, ALWAYS encrypt then MAC!

Mb_strlen Undefined

Php strlenMb_strlen

Mb_strlen In Javascript


Mb_strlen Expects Parameter 1 To Be String

In PHP, strlen and Mbstrlen are functions for string lengths, but for some beginners, if you don't read the manual, you may not know the difference. If you like these tools and you want to help us pay for the hosting you can use the following buttons to donate some money. Utf8.php - mbstrlen($string function. MbstrlenReturns the actual number of characters. If it is a wide character, it will be counted as length. If it is a wide character, it will be counted as length. So the following code.