#20695 [Opn]: substr does not always return a string

From: Date: Mon, 09 Dec 2002 11:43:38 +0000
Subject: #20695 [Opn]: substr does not always return a string
References: 1  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969350243@lists.php.net to get a copy of this message
ID: 20695 Updated by: sniper@php.net Reported By: RNova@gmx.net Status: Open -Bug Type: Feature/Change Request +Bug Type: Documentation problem Operating System: Windows 98 PHP Version: 4.2.3 New Comment: This script shows clearly what happens: <?php var_dump(substr("A",0,1)); var_dump(substr("A",0,0)); var_dump(substr("A",1,1)); var_dump(substr("A",1,0)); ?> Output: string(1) "A" string(0) "" bool(false) bool(false) And this is quite correct and expected behaviour. Documentation though should mention that invalid start position and length will make it return FALSE. Previous Comments: ------------------------------------------------------------------------ [2002-12-09 05:18:24] RNova@gmx.net Hi Jan, thanks for you reply! I have tried the snapshot (for Windows) that you pointed me to. The program works as you say - which IMHO is a bug. The output is - as you mention: 1<BR> substr("A",0,1):1<BR> substr("A",0,0):1<BR> substr("A",1,1):<BR> substr("A",1,0):<BR> This means that substr("A",1,1) and substr("A",1,0) are both not strings. Therefore substr does _not_ always return a string. If this is considered correct, then it should be mentioned in the documentation. Personally, I would prefer this to be considered incorrect: I would prefer substr($s,$n,$m) to always return a string, at least if $s is a string and $n and $m are integers. Please either improve the documentation or make substr($s,$n,$m) always return a string (at least if $s is a string and $n and $m are integers). Thanks for putting this PHP together. It is a great means to produce results quickly! Cheers, Raimund ------------------------------------------------------------------------ [2002-12-08 10:20:23] sniper@php.net No feedback was provided. The bug is being suspended because we assume that you are no longer experiencing the problem. If this is not the case and you are able to provide the information that was requested earlier, please do so and change the status of the bug back to "Open". Thank you. ------------------------------------------------------------------------ [2002-11-28 04:49:32] jan@php.net Please try using this CVS snapshot: http://snaps.php.net/php4-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-latest.zip jan@dahlia ~> php bug_20695.php 1<BR> substr("A",0,1):1<BR> substr("A",0,0):1<BR> substr("A",1,1):<BR> substr("A",1,0):<BR> jan@dahlia ~> php -v PHP 4.4.0-dev (cli) works fine here ------------------------------------------------------------------------ [2002-11-28 04:45:55] RNova@gmx.net substr($s,$n,$m) is supposed to always return a string (at least if $s is a string and $n and $m are integers). However: is_string(substr($s,strlen($s),$m)) returns false, so substr did not return a string. Example: echo is_string("")."<BR>\n"; echo "substr(\"A\",0,1):".is_string(substr("A",0,1))."<BR>\n"; echo "substr(\"A\",0,0):".is_string(substr("A",0,0))."<BR>\n"; echo "substr(\"A\",1,1):".is_string(substr("A",1,1))."<BR>\n"; echo "substr(\"A\",1,0):".is_string(substr("A",1,0))."<BR>\n"; ------------------------------------------------------------------------ [2002-11-28 04:40:53] RNova@gmx.net substr($s,$n,$m) is supposed to always return a string (at least if $s is a string and $n and $m are integers). However: is_string(substr($s,strlen($s),$m)) returns false, so substr did not return a string. Example: $s="<AB attr = \n\"value\" >"; echo is_string("")."<BR>\n"; echo "substr(\"A\",0,1):".is_string(substr("A",0,1))."<BR>\n"; echo "substr(\"A\",0,0):".is_string(substr("A",0,0))."<BR>\n"; echo "substr(\"A\",1,1):".is_string(substr("A",1,1))."<BR>\n"; echo "substr(\"A\",1,0):".is_string(substr("A",1,0))."<BR>\n"; ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=20695&edit=1

« previous php.doc (#969350243) next »