rfc:add_str_begin_and_end_functions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
rfc:add_str_begin_and_end_functions [2019/07/05 02:01] – Added references to other languages wkhudgins92rfc:add_str_begin_and_end_functions [2019/07/07 15:46] – typo nikic
Line 1: Line 1:
-====== PHP RFC: Add str begin and end functions ======+====== PHP RFC: Add str_starts_with(), str_ends_with() and related functions ======
   * Version: 0.4   * Version: 0.4
   * Date: 2016-08-01 (use today's date here) **Updated: 2019-06-18**   * Date: 2016-08-01 (use today's date here) **Updated: 2019-06-18**
   * Author: Will Hudgins, will@wkhudgins.info   * Author: Will Hudgins, will@wkhudgins.info
-  * Status: Under Discussion+  * Status: Voting
   * First Published at: https://wiki.php.net/rfc/add_str_begin_and_end_functions   * First Published at: https://wiki.php.net/rfc/add_str_begin_and_end_functions
  
Line 10: Line 10:
  
 ===== Proposal ===== ===== Proposal =====
-Add str_starts_with(), str_starts_with_ci(), str_ends_with(), str_ends_with_ci(), mb_str_starts_with(), mb_str_starts_with_ci(), mb_str_ends_with(), and mb_str_ends_with_ci() functions+Add str_starts_with(), str_starts_with_ci(), str_ends_with(), str_ends_with_ci(), mb_str_starts_with(), mb_str_starts_with_ci(), mb_str_ends_with(), and mb_str_ends_with_ci() functions:
  
-  boolean str_starts_with[(string $haystack, string $needle)] +<PHP> 
-  boolean str_starts_with_ci[(string $haystack, string $needle)] +function str_starts_with(string $haystack, string $needle): bool 
-  boolean str_ends_with[(string $haystack, string $needle)] +function str_starts_with_ci(string $haystack, string $needle): bool 
-  boolean str_ends_with_ci[(string $haystack, string $needle)] +function str_ends_with(string $haystack, string $needle): bool 
-  boolean mb_str_starts_with[(string $haystack, string $needle [, string $encoding])] +function str_ends_with_ci(string $haystack, string $needle): bool 
-  boolean mb_str_starts_with_ci[(string $haystack, string $needle [, string $encoding])] +function mb_str_starts_with(string $haystack, string $needle [, string $encoding]): bool 
-  boolean mb_str_ends_with[(string $haystack, string $needle [, string $encoding])] +function mb_str_starts_with_ci(string $haystack, string $needle [, string $encoding]): bool 
-  boolean mb_str_ends_with_ci[(string $haystack, string $needle [, string $encoding])]+function mb_str_ends_with(string $haystack, string $needle [, string $encoding]): bool 
 +function mb_str_ends_with_ci(string $haystack, string $needle [, string $encoding]): bool 
 +</PHP>
      
 str_starts_with() checks if $haystack begins with $needle. It accomplishes this by comparing each character in $haystack with the corresponding character in $needle. If any of the characters do not match, it will return false. str_ends_with() does the same thing except in reverse: it starts at the end of both $haystack and $needle and compares each character in $haystack to the corresponding character in $needle. str_starts_with() checks if $haystack begins with $needle. It accomplishes this by comparing each character in $haystack with the corresponding character in $needle. If any of the characters do not match, it will return false. str_ends_with() does the same thing except in reverse: it starts at the end of both $haystack and $needle and compares each character in $haystack to the corresponding character in $needle.
Line 28: Line 30:
  
 Examples below: Examples below:
-  $str = "beginningMiddleEnd"; + 
-  if (str_starts_with($str, "beg")) +<PHP> 
-      echo "This condition would be true"; +$str = "beginningMiddleEnd"; 
-   if (str_starts_with($str, "Beg")) +if (str_starts_with($str, "beg")) 
-       echo "This condition would not be true"; +    echo "This condition would be true"; 
-   if (str_starts_with_ci($str, "beg")) +if (str_starts_with($str, "Beg")) 
-       echo "This condition would be true"; +    echo "This condition would not be true"; 
-   if (str_starts_with_ci($str, "Beg")) +if (str_starts_with_ci($str, "beg")) 
-       echo "This condition would also be true"; +    echo "This condition would be true"; 
-   if (str_ends_with($str, "End")) +if (str_starts_with_ci($str, "Beg")) 
-      echo "This condition would be true"; +    echo "This condition would also be true"; 
-   if (str_ends_with($str, "end")) +if (str_ends_with($str, "End")) 
-       echo "This condition would not be true"; +    echo "This condition would be true"; 
-   if (str_ends_with_ci($str, "End")) +if (str_ends_with($str, "end")) 
-       echo "This condition would be true"; +    echo "This condition would not be true"; 
-   if (str_ends_with_ci($str, "end")) +if (str_ends_with_ci($str, "End")) 
-       echo "This condition would also be true";+    echo "This condition would be true"; 
 +if (str_ends_with_ci($str, "end")) 
 +    echo "This condition would also be true"; 
 +</PHP>
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
Line 50: Line 55:
  
 ===== Proposed PHP Version(s) ===== ===== Proposed PHP Version(s) =====
-Next PHP 7.release.+Next eligible PHP 7.release.
  
 ===== RFC Impact ===== ===== RFC Impact =====
Line 76: Line 81:
  
 ===== Future Scope ===== ===== Future Scope =====
 +
 Once this feature is approved and added, it will not need any future improvements. Once this feature is approved and added, it will not need any future improvements.
  
-===== Proposed Voting Choices ===== +===== Vote ===== 
-This project requires a 2/3 majority to be approved.+ 
 +Voting closes 2019-07-20. 
 + 
 +<doodle  
 +title="Do you want str_starts_with, str_starts_with_ci, str_ends_with, and str_ends_with_ci functions in PHP 7.4?" auth="user" voteType="single" closed="no"> 
 +   * yes 
 +   * no 
 +</doodle> 
 + 
 +---- 
 + 
 +<doodle  
 +title="Do you want mb_ str_starts_with, mb_str_starts_with_ci, mb_str_ends_with, and mb_str_ends_with_ci functions in PHP 7.4?" auth="user" voteType="single" closed="no"> 
 +   * yes 
 +   * no 
 +</doodle>
  
 ===== Patches and Tests ===== ===== Patches and Tests =====
Line 92: Line 113:
 ===== References ===== ===== References =====
 Implementation of similar methods/functions in other languages: Implementation of similar methods/functions in other languages:
-http://ruby-doc.org/core-2.1.1/String.html#method-i-start_with-3F +
-https://golang.org/pkg/strings/#HasPrefix +
-https://hackage.haskell.org/package/MissingH-1.4.0.1/docs/Data-String-Utils.html#v:startswith+
 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
 +
 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
 +
 https://docs.python.org/3/library/stdtypes.html?highlight=startswith#str.startswith https://docs.python.org/3/library/stdtypes.html?highlight=startswith#str.startswith
 +
 https://docs.python.org/3/library/stdtypes.html?highlight=startswith#str.endswith https://docs.python.org/3/library/stdtypes.html?highlight=startswith#str.endswith
 +
 https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#startsWith(java.lang.String) https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#startsWith(java.lang.String)
 +
 +http://ruby-doc.org/core-2.1.1/String.html#method-i-start_with-3F
 +
 https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#startsWithIgnoreCase-java.lang.CharSequence-java.lang.CharSequence- https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#startsWithIgnoreCase-java.lang.CharSequence-java.lang.CharSequence-
 +
 +https://golang.org/pkg/strings/#HasPrefix
 +
 +https://hackage.haskell.org/package/MissingH-1.4.0.1/docs/Data-String-Utils.html#v:startswith
  
 Related feature request: [[bugid@50434]]. Related feature request: [[bugid@50434]].
rfc/add_str_begin_and_end_functions.txt · Last modified: 2019/07/22 08:47 by nikic