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

学习韶光

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

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

接着是 endsWith 函数:

php判断字符串开头3分钟短文  伸手党有福了PHP也能用上startsWithendsWith 了 Angular

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 :_)

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