rfc:add_str_begin_and_end_functions
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
rfc:add_str_begin_and_end_functions [2019/07/05 02:03] wkhudgins92 Formatting |
rfc:add_str_begin_and_end_functions [2019/07/22 08:47] nikic Close voting |
||
---|---|---|---|
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: Declined |
* 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 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="yes"> | ||
+ | * 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="yes"> | ||
+ | * 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 | ||
Line 107: | Line 123: | ||
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