Req #40531 [Com]: mb_substr optional parameters
| From: | spam02 at live dot com | Date: | Tue, 31 Jul 2012 11:11:19 +0000 |
| Subject: | Req #40531 [Com]: mb_substr optional parameters | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-172345@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=40531&edit=1
ID: 40531
Comment by: spam02 at live dot com
Reported by: emwebdev at hotmail dot com
Summary: mb_substr optional parameters
Status: Open
Type: Feature/Change Request
Package: mbstring related
Operating System: Windows XP
PHP Version: 5.2.1
Block user comment: N
Private report: N
New Comment:
seems null = not empty in mb_substr()...
//example
$text = 'test';
mb_substr($text,-1); //result t
mb_substr($text,-1,null) //result '' expected t
substr($text,-1); //result t
substr($text,-1, null) //result '' expected t
php version 5.3.3-7+squeeze13
Previous Comments:
------------------------------------------------------------------------
[2007-02-18 08:18:24] emwebdev at hotmail dot com
Apologies, reproduce code should be as follows:
var_dump(mb_substr('foobar', 3));
var_dump(mb_substr('foobar', 3, null));
Expected and actual results are the same.
Thanks
------------------------------------------------------------------------
[2007-02-18 08:15:58] emwebdev at hotmail dot com
Description:
------------
Hi there
I'm not sure if the following is intended functionality or a bug, but I've tried many
forums etc. and been unable to get an answer.
When you use mb_substr() and omit the third argument (length), the function returns all characters
from the start index to the end of the string.
This is fine unless you want to specify the character encoding explicitly as the fourth argument.
This forces you to supply the length argument also.
It would seem logical that passing null for the length argument would make mb_substr() behave the
same as if it had been omitted, but this is not the case.
Passing null as the length argument to mb_substr() (or substr() itself for that matter) will produce
an empty string every time.
This means that to achieve the same functionality displayed when the length argument is omitted, you
have to calculate the remaining string length yourself which is no doubt much less efficient.
Thanks for your time,
Erin
Reproduce code:
---------------
var_dump(substr('foobar', 3));
var_dump(substr('foobar', 3, null));
Expected result:
----------------
'bar' (length=3)
'bar' (length=3)
Actual result:
--------------
'bar' (length=3)
'' (length=0)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=40531&edit=1