#50434 [Ana]: add string functions str_startswith and str_endswith for convenience

From: Date: Thu, 10 Dec 2009 00:58:49 +0000
Subject: #50434 [Ana]: add string functions str_startswith and str_endswith for convenience
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-145603@lists.php.net to get a copy of this message
ID: 50434 User updated by: mail at daniel-faber dot de Reported By: mail at daniel-faber dot de Status: Analyzed Bug Type: Feature/Change Request PHP Version: 5.2.11 New Comment: rasmus, this is right in nearly all cases, but here are some corner cases where your code fails: startswith('', '0') should be false, but your code gives true reason: substr('', 0, 1) is false false == '0' is true if you try to fix this by replacing == with ===, another corner case will fail: startswith('', '') should be true, but will be false reason: substr('', 0, 0) is false false === '' is false this seems to work in all cases: function str_startswith($string, $prefix) { if (strlen($string) < strlen($prefix)) return false; return substr($string, 0, strlen($prefix)) == $prefix; } similar for endswith: endswith('', '0') should be false, but is true endswith('test', '') should be true, but is false this seems to work in all cases: function str_endswith($string, $suffix) { $suffixLength = strlen($suffix); if ($suffixLength == 0) return true; if (strlen($string) < $suffixLength) return false; return substr($string, -$suffixLength) == $suffix; } Previous Comments: ------------------------------------------------------------------------ [2009-12-09 23:48:49] rasmus@php.net Isn't it super trivial given the way substr works in PHP? startswith: substr($haystack,0,strlen($prefix)) == $prefix endswith: substr($haystack,-strlen($suffix)) == $suffix Usually we add things to core that can't be done with a single trivial call in PHP. The only thing you save is the strlen call, and you can hardcode that to avoid it. ------------------------------------------------------------------------ [2009-12-09 23:39:58] mail at daniel-faber dot de Description: ------------ Please add these two string functions for convenience: boolean str_startswith($string, $prefix) // true if $string starts with $prefix, false otherwise boolean str_endswith($string, $suffix) // true if $string ends with $suffix, false otherwise Of course one can easily write these functions in PHP, but having them in the PHP core would be nice. You find them in other languages too: Java: string.startsWith(prefix) and string.endsWith(suffix) Python: string.startswith(prefix) and string.endswith(suffix) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=50434&edit=1

« previous php.bugs (#145603) next »