Req #55451 [Com]: substr_compare and case sensitivity

From: Date: Wed, 03 Aug 2016 09:38:56 +0000
Subject: Req #55451 [Com]: substr_compare and case sensitivity
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-202870@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=55451&edit=1

 ID:                 55451
 Comment by:         lauri dot kentta at gmail dot com
 Reported by:        datibbaw@php.net
 Summary:            substr_compare and case sensitivity
 Status:             Open
 Type:               Feature/Change Request
 Package:            Unknown/Other Function
 Operating System:   NA
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

Notice that the original test doesn't work anymore, since the NULL is converted to zero length
and currently zero length is accepted and will always report equal (empty) substrings.

Better test:

--TEST--
Bug #55451 (substr_compare with NULL as default length)
--FILE--
<?php
var_dump(substr_compare("abcde", "ABCD", 0, NULL, false));   // not equal
var_dump(substr_compare("abcde", "ABCD", 0, NULL, true));    // not equal
var_dump(substr_compare("abcde", "ABCDE", 0, NULL, false));  // not equal
var_dump(substr_compare("abcde", "ABCDE", 0, NULL, true));   // equal
?>
--EXPECT--
int(1)
int(1)
int(1)
int(0)


Previous Comments:
------------------------------------------------------------------------
[2016-08-03 09:38:54] lauri dot kentta at gmail dot com

Notice that the original test doesn't work anymore, since the NULL is converted to zero length
and currently zero length is accepted and will always report equal (empty) substrings.

Better test:

--TEST--
Bug #55451 (substr_compare with NULL as default length)
--FILE--
<?php
var_dump(substr_compare("abcde", "ABCD", 0, NULL, false));   // not equal
var_dump(substr_compare("abcde", "ABCD", 0, NULL, true));    // not equal
var_dump(substr_compare("abcde", "ABCDE", 0, NULL, false));  // not equal
var_dump(substr_compare("abcde", "ABCDE", 0, NULL, true));   // equal
?>
--EXPECT--
int(1)
int(1)
int(1)
int(0)

------------------------------------------------------------------------
[2011-08-18 15:56:29] datibbaw@php.net

The following patch has been added/updated:

Patch Name: substr_compare_optlen
Revision:   1313682989
URL:        https://bugs.php.net/patch-display.php?bug=55451&patch=substr_compare_optlen&revision=1313682989

------------------------------------------------------------------------
[2011-08-18 15:55:57] datibbaw@php.net

Description:
------------
The $length parameter of this function is optional in the documentation, but 
currently it can't be skipped to only set the case sensitivity flag. Values like 
null or false get converted into 0 which causes a warning and the function returns 
false.

Using null to skip the $length parameter would be nice.

Test script:
---------------
<?php

// should output: 0
echo substr_compare("hello World", "world", 6, null, true), PHP_EOL;

?>

Expected result:
----------------
0

Actual result:
--------------
Warning: substr_compare(): The length must be greater than zero


------------------------------------------------------------------------



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


Thread (4 messages)

« previous php.bugs (#202870) next »