Hi: compare to use substr, strncmp supporting negative lenght can save a temp variable.
thanks 2011/8/15 Rasmus Lerdorf <ras...@php.net>: > On 08/14/2011 02:37 PM, Rasmus Lerdorf wrote: >> On 08/14/2011 02:03 PM, Stas Malyshev wrote: >>> Hi! >>> >>> On 8/14/11 11:40 AM, Rasmus Lerdorf wrote: >>>> My main issue with changing strncmp/strncasecmp is that these are >>>> currently exact mappings of the underlying libc functions. For people >>> >>> And why should anybody care? 99% of people using PHP never used a libc >>> function and can hardly tell libc from gcc. If we can extend this >>> function with useful functionality, nobody cares about what libc does. >>> >>>> For example, I could imagine people writing code along these lines: >>>> >>>> $len = strlen($user_data) - strlen($suffix); >>>> if(!strncmp($user_data, $string, $len)) { >>>> // do something >>>> } >>> >>> Warning doesn't fix the bug - and unless you're in 0.0001% of the >>> population that actually reads the logs daily and checks every message >>> there it would be little to help you. We should have more useful >>> functions, not more warnings. Warning won't make this code to work. >> >> I agree, however this change would potentially change the return value >> of the function. Before it would warn and not match. Even if you never >> saw the warning, at least length -1 would not give you a match. Now if >> the user data happens to end with the right character we now have a >> string match which is not at all what the code was written to do. > > Put more succinctly. Subtle BC breaks like this worry me. Any strncmp() > call with a computed length where that length may in some cases go > negative will now potentially return a match where it wouldn't before. > This would be very hard to track down. And the reason for introducing > this subtle BC break is so that you can rewrite: > > if (substr("prefix_num", -3) == "num") { > echo "they have same suffix\n"; > } > > > into: > > if (strncmp("prefix_num", "num", -3) === 0) { > echo "they have same suffix\n"; > } > > That doesn't seem like a big win to me. > > -Rasmus > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Laruence Xinchen Hui http://www.laruence.com/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php