Edit report at https://bugs.php.net/bug.php?id=40531&edit=1

 ID:                 40531
 Updated by:         ahar...@php.net
 Reported by:        emwebdev at hotmail dot com
 Summary:            mb_substr optional parameters
-Status:             Open
+Status:             Wont fix
 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:

Documented behaviour, same reasoning as bug #62703.


Previous Comments:
------------------------------------------------------------------------
[2012-07-31 14:33:27] larue...@php.net

I am not sure about this,  fix will be easy, but bc break..

------------------------------------------------------------------------
[2012-07-31 11:11:18] spam02 at live dot com

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

------------------------------------------------------------------------
[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

Reply via email to