Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:94719 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 32040 invoked from network); 27 Jul 2016 00:55:44 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 27 Jul 2016 00:55:44 -0000 Authentication-Results: pb1.pair.com smtp.mail=me@daveyshafik.com; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=me@daveyshafik.com; sender-id=unknown Received-SPF: error (pb1.pair.com: domain daveyshafik.com from 209.85.216.180 cause and error) X-PHP-List-Original-Sender: me@daveyshafik.com X-Host-Fingerprint: 209.85.216.180 mail-qt0-f180.google.com Received: from [209.85.216.180] ([209.85.216.180:34472] helo=mail-qt0-f180.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 9B/82-18985-F8608975 for ; Tue, 26 Jul 2016 20:55:43 -0400 Received: by mail-qt0-f180.google.com with SMTP id u25so21349888qtb.1 for ; Tue, 26 Jul 2016 17:55:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daveyshafik-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=Fg8as/ezuJuJmpiwTr7bV0xMGY5ii2yUjEh8SUKH0uk=; b=P0UcKqA0CIEufGSHI1I5LIJBe3Xj+y6hYUu5Jl5gTm5vdzN3K3AJMPWBHBTotUMG1g 7SqAlXjWyl5MzkC5Oot9QwwkpacLkfslhW6YIBAqUX0oZvttPbcvP1O6W/n2Zd1aX2r5 jdUyl+zPTGCqLXJA9RZSFmBtfwNM9sBM/CdKXM5N7nEx0OJ4L8FJbtHxv+7LAk6a7uZh 9AyinzFb59QSF4Fx5G1uH7yw4+EDInFGTk3KeE11TLYiWTK2xJdyqeP0Wv+eT/a83BD5 zUrRBDeTSSYeZ3HRVIscUaYOFPTqELMkzQEW3qpBolqhcf19UrUUEjrESEfH7qPecpvE jz1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=Fg8as/ezuJuJmpiwTr7bV0xMGY5ii2yUjEh8SUKH0uk=; b=nAskRN4oy0uW477a/1RDG5yx9brmT6D3jCARM2awht0Zq49PFMfUmmXXCUz0pD0ySe Gnz6ho8bNgAG1BwHK1t7OxZQuutRHziU+zOF1PlTDi+c6tV9+fKc2hiEEubTrI+nQtfU OpuSAJ/KZhybMPQhbUvZCibR9lXxe+IjiypDP4/A5aJcEieCFbvgJ+7zuFhbvbvcMgR4 D4zjONqwPgcz38zBQasdNpF2YUXDZi49KRjzaJEpgNH5T9OiZ+XaNgyuoY5DiE+XkLEU A+NWUGPmmMMQCEKWSExp/SUc8gyKDSPzwAfE5Q/tIG/XBnQnbo7Xf54MPDOGO7hRBLG/ Ya+Q== X-Gm-Message-State: AEkoouujZEv2pFmi5nPPbpcbHHPbgk5m+rL32UnpHk9F6ivdxwAjhNQ+yr6OToRnkDxUAw+QJGppUh6jsL6gl/jf X-Received: by 10.200.56.35 with SMTP id q32mr43206634qtb.32.1469580940578; Tue, 26 Jul 2016 17:55:40 -0700 (PDT) MIME-Version: 1.0 Sender: me@daveyshafik.com Received: by 10.237.55.138 with HTTP; Tue, 26 Jul 2016 17:55:40 -0700 (PDT) In-Reply-To: <99c50f35968001e99765a0c760e2b906@wkhudgins.info> References: <2a035597d443afb282e374aead55319d@wkhudgins.info> <99c50f35968001e99765a0c760e2b906@wkhudgins.info> Date: Tue, 26 Jul 2016 17:55:40 -0700 X-Google-Sender-Auth: eLDl2wHMFYEQXWD2NuwD3ouHnKo Message-ID: To: will@wkhudgins.info Cc: David Rodrigues , PHP Internals Content-Type: multipart/alternative; boundary=001a113aad42eeadb70538937906 Subject: Re: [PHP-DEV] RFC Karma Request From: davey@php.net (Davey Shafik) --001a113aad42eeadb70538937906 Content-Type: text/plain; charset=UTF-8 Ah, I missed that. If we had ranges (e.g. $string[0..4] or $string[-1..4]) that'd work, but we don't. Now I see some value in the function, though still perhaps not enough to justify above and beyond strpos etc. On Tue, Jul 26, 2016 at 5:11 PM, wrote: > Davey, > > Thanks for joining the conversation! That code snippet is very elegant, > and it is a superb way of checking if a string starts with or ends with a > specific character. However, it does not check if a string starts with or > ends with a specific string, containing multiple characters. > > True str_begins and str_ends would do check if a string begins or ends > with a string of n characters. > > Regards, > > -Will > > > On 2016-07-26 19:39, Davey Shafik wrote: > >> Will, >> >> Now that we have generalized support for negative string offsets you >> can now just do: >> >> $string = "/foo/bar/bat/"; >> if ($string[0] === "/") { // fully-qualified path } >> if ($string[-1] === "/") { // trailing "/" } >> >> This avoids the overhead of a function call, arguably is as >> expressive, and a lot more functional (e.g. offset -2). >> >> - Davey >> >> On Tue, Jul 26, 2016 at 2:27 PM, wrote: >> >> Thanks for replying David. >>> >>> Thanks for the questions, its good to elaborate on things some. I'll >>> address each question here: >>> >>> 1. No, I guess this is my first time reaching out to the community. >>> I had gone with str_begins and str_ends because it fit some of the >>> current naming approaches. I could see an argument for >>> strstarts/strends, strbegins/strends, or startsWith/endsWith. I'm >>> flexible with the exact naming. >>> >>> 2. I don't think performance-wise it would be a big improvement over >>> using strpos, preg_match, or substr. However, I think it might be an >>> improvement readability-wise. Right now people either use somewhat >>> confusing code, like strpos or substr, or they implement their own >>> user-defined str_starts function. I think the benefit in terms of >>> readability and usability justifies the addition of two new >>> functions to the namespace. >>> >>> 3. This functionality is doable with the current implementation. >>> However, part of the goal of languages or tools is to make it easy >>> to do common, routine tasks. Python, Java, Ruby, C# and JavaScript >>> all provide this functionality. So I am sure people would find it >>> useful in PHP. >>> >>> 4. Right now, the way I have it implemented, it is case-sensitive. >>> If people wanted, it could be implemented to take an optional >>> boolean parameter called case_sensitive which defaults to true. I >>> could make that change pretty easily, if I did that the function >>> headers would be: >>> >>> boolean str_starts (string $str , str $search_value [, bool >>> $case_sensitive = true ] ) >>> boolean str_ends (string $str , str $search_value [, bool >>> $case_sensitive = true ] ) >>> >>> I like the idea of doing that instead of having separate, >>> case-insensitive, functions because it helps keep the name space >>> less cluttered. >>> >>> I hope this has provided some helpful information. Please get back >>> with me with your thoughts. >>> >>> Thanks, >>> Will >>> >>> On 2016-07-26 16:09, David Rodrigues wrote: >>> Questions: >>> >>> 1. >>> Have you talked with this list about the terms of you suggestions? >>> (like str_begins, str_starts, strstarts, strbegins, str_ends, >>> strends...) >>> Is yes, sorry, I do not received this topic before. >>> >>> 2. >>> There some valid performance advantage over strpos()? >>> >>> 3. >>> And about the "market" for this new function? >>> I mean, about users really need a new function like it on core. >>> >>> 4. >>> And about the case sensitiblity? >>> Should have some function like stribegins() or will be an argument? >>> >>> In general, I like this implementation, but I like to know about you >>> in this questions. >>> I don't know the policy about implements new functions on "str >>> namespace". >>> >>> Thanks! >>> >>> 2016-07-26 15:41 GMT-03:00 : >>> Hello, >>> >>> I would like to submit an RFC for adding a str_begins and str_ends >>> function, >>> in relation to https://bugs.php.net/bug.php?id=67035 and >>> https://bugs.php.net/bug.php?id=50434. I've added those functions on >>> my >>> local PHP copy. I would like to make an RFC and a PR for adding it >>> to the >>> core PHP copy. >>> >>> Thanks, >>> >>> Will >>> >>> -- >>> PHP Internals - PHP Runtime Development Mailing List >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >> >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >> > --001a113aad42eeadb70538937906--