第一句子大全,网罗天下好句子,好文章尽在本站!

3分钟短文|伸手党有福了 PHP也能用上startsWith endsWith 了

时间:2013-07-21

引言写程序的时候经常会遇到这样的需求,判断某个字符串是否以某个子字符串开头或者结尾?一般你是怎么做的呢?每次都要手动写 substr 匹配?或者正则

友情提示:本文共有 1227 个字,阅读大概需要 3 分钟。

引言

写程序的时候经常会遇到这样的需求,判断某个字符串是否以某个子字符串开头或者结尾?一般你是怎么做的呢?每次都要手动写 substr 匹配?或者正则验证?是不是太麻烦了,就封装成 helper 函数。

这有点太 PHP 了,不行就来个函数。能不能优雅一些呢?本文就带你来看看。

学习时间

我们也先来造个轮子,看看其中一种的实现方法。先实现 startsWith 函数:

function startsWith($haystack, $needle){$length = strlen($needle); return (substr($haystack, 0, $length) === $needle); }

接着是 endsWith 函数:

function endsWith($haystack, $needle){$length = strlen($needle); if ($length == 0) { return true; } return (substr($haystack, -$length) === $needle); }

原理都非常简单,除了字符串长度的验证,非法数据的验证。核心使用 substr 进行函数切割。切割长度就是子字符串的长度。如果完全相同,就是 true。

引申方法

我们说条条大道通罗马,php 实现功能也不仅仅一个办法。下面是使用内置函数 substr_compare 实现。该函数是二进制安全比较字符串,从偏移位置比较指定长度。具体形参就不具体贴出来了,大家看看手册,对比一下该函数的返回值。

下面直接贴代码。先是 startsWith 函数:

function startsWith($haystack, $needle) {return substr_compare($haystack, $needle, 0, strlen($needle)) === 0; }

然后是 endsWith 函数:

function endsWith($haystack, $needle) {return substr_compare($haystack, $needle, -strlen($needle)) === 0; }

是不是精简许多。一行代码实现,容错性还非常好。简直是NB!

优秀的框架

Laravel 5 为我们提供的 Str 类,也含有了 startsWith endsWith 方法。我们贴出来供大家对比:

我们看到,该方法第二个参数接受 string | array 数据,可以多个匹配。而且在数据类型上也做了强制转换,使得错误率更低,指向更明确。

写在最后

本文展示了 PHP 如何使用内置函数实现 startsWith / endsWith 方法。提供了 3 种方法,大家对比研究一下,哪种写法更健壮。

Haapy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

本文如果对你有帮助,请点赞收藏《3分钟短文|伸手党有福了 PHP也能用上startsWith endsWith 了》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
3分钟短文:Laravel说要用软删除 可不要真删

3分钟短文:Laravel说要用软删除 可不要真删

引言我们不止一次在系列文章中讲到模型的“软删除”功能,因为现实场景中为了保证数据可追溯,我们几乎不会对数据库进行物理删除。删除数据有可能会造成数据一致性的破坏,进而导致业务逻辑无法跑通。所以,软删除的...

2015-08-31 #经典句子

幽默的漫画和大话风格的语言 带你遨游TCP/IP的世界

幽默的漫画和大话风格的语言 带你遨游TCP/IP的世界

...(还是packetdrill好用,囧)。针对目前遇到的场景,勉强能用,再则已经撸惯了python,上手起来比较容易。 2. 基本语法 安装scap……JavaTCP上传图片代码实例1.客户端代码 public class UploadPicClient { public static void main(String[] args) throws U...

2023-09-22 #经典句子

WP菜鸟建站14:怎样修改wordpress后台的文章编辑器到旧版本?

WP菜鸟建站14:怎样修改wordpress后台的文章编辑器到旧版本?

...站资源,插件安装多了,就会影响到网站的网速。所以,能用代码实现的功能,就尽量不去安装插件,这也是众多wordpress开发者们所公认的。那么,修改wordpress文章编辑器到旧版本,可以通过代码来实现吗?答案是:肯定的。把...

2016-10-18 #经典句子

php是世界上最好的语言 为什么是自黑的话 看到了大家还笑?

php是世界上最好的语言 为什么是自黑的话 看到了大家还笑?

Php是世界上最好的语言,一直广泛流传在互联网上,但是为什么偏偏是php是世界上最好的语言,而不说c,java,python,go等等是世界上最好的语言呢?难道php得罪了谁了,然后被恶搞了,不然你看到这句话为什么想笑呢?我不知...

2022-11-26 #经典句子

英语名著手抄报

英语名著手抄报

https://yun.nxeduyun.com/index.php?r=space/person/index&sid=d097be9b30bd408d836b8952a89884f6&sid=d097be9b30bd408d836b8952a89884f6https://yun.nxeduyun.com/index.php?r=space/person/index&sid=d097be9b30bd408d836b8952a89884f6&sid=d097be9b30bd408d836b8952a89884f6https://yun.nxeduyun.com/index.php?r=space...

2019-05-09 #经典句子

太全了!高中英语短文改错大全「附答案」高分必备 三年都能用!

太全了!高中英语短文改错大全「附答案」高分必备 三年都能用!

...析了高中三年英语的知识难点和要点,总结出《高中英语短文改错大全》内附答案!并通过对近5年高考大纲和真题的总结提炼,成功找出高考试题规律,总结答题模板和快速解题技巧,可以帮助大家在短时间内,完善学科漏洞...

2013-12-11 #经典句子

PHP丨PHP基础知识之条件语IF判断「理论篇」

PHP丨PHP基础知识之条件语IF判断「理论篇」

if语句是指编程语言(包括c语言、C#、VB、java、php、汇编语言等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if语句概述if语句是指编程语言(包括c语言、C++、C#、java、php、VB、...

2019-05-24 #经典句子

细节决定成败 php中3个跳出循环语句 你分清楚了吗?

细节决定成败 php中3个跳出循环语句 你分清楚了吗?

php语言对于编程者来说,入门是相当快的,理解起来比较容易,但是有很多小的细节,很多想速成的小伙伴却没有认真地理解清楚,比如这个php当中3个的循环跳出语句,就是非常重要但又非常细小的细节,所谓细节决定成败,...

2022-12-29 #经典句子