PHP中startsWith()和endsWith()函数如何使用
PHP中startsWith()和endsWith()函数如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
例如:
$str = '|apples}';echo startsWith($str, '|'); //Returns trueecho endsWith($str, '}'); //Returns true
上面的正则表达式功能,但上面提到的其他调整:
function startsWith($needle, $haystack) { return preg_match('/^' . preg_quote($needle, '/') . '/', $haystack); } function endsWith($needle, $haystack) { return preg_match('/' . preg_quote($needle, '/') . '$/', $haystack); }
简而言之:
function startsWith($str, $needle){ return substr($str, 0, strlen($needle)) === $needle;}function endsWith($str, $needle){ $length = strlen($needle); return !$length || substr($str, - $length) === $needle;}
您可以使用substr_compare
函数来检查start-with和ends-with:
function startsWith($haystack, $needle) { return substr_compare($haystack, $needle, 0, strlen($needle)) === 0;}function endsWith($haystack, $needle) { return substr_compare($haystack, $needle, -strlen($needle)) === 0;}
这应该是PHP 7( 基准脚本 )上最快的解决方案之一。 测试了8KB干草堆,各种长度的针和完整,部分和无匹配的情况。 strncmp
是一个更快的触摸开始 - 但它无法检查结束。
为什么不以下?
//How to check if a string begins with another string$haystack = "valuehaystack";$needle = "value";if (strpos($haystack, $needle) === 0){ echo "Found " . $needle . " at the beginning of " . $haystack . "!";}
输出:
在valuehaystack开头找到价值!
请记住,如果在大海捞针中找不到针, strpos
将返回false,并且当且仅当在指数0处找到针时才会返回0(AKA开头)。
以下是:
$haystack = "valuehaystack";$needle = "haystack";//If index of the needle plus the length of the needle is the same length as the entire haystack.if (strpos($haystack, $needle) + strlen($needle) === strlen($haystack)){ echo "Found " . $needle . " at the end of " . $haystack . "!";}
在这种情况下,不需要函数startsWith()as
(strpos($stringToSearch, $doesItStartWithThis) === 0)
将准确地返回真或假。
这看起来很奇怪,所有狂野的功能在这里都很猖獗。
我意识到这已经完成了,但你可能想看一下strncmp因为它允许你把字符串的长度进行比较,所以:
function startsWith($haystack, $needle, $case=true) { if ($case) return strncasecmp($haystack, $needle, strlen($needle)) == 0; else return strncmp($haystack, $needle, strlen($needle)) == 0;}
看完上述内容,你们掌握PHP中startsWith()和endsWith()函数如何使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341