我如何编写两个带字符串的函数,如果它以指定的字符/字符串开头或以它结尾,则返回?

例如:

$str = '|apples}';

echo startsWith($str, '|'); //Returns true

echo endsWith($str, '}'); //Returns true

#1楼

上面的正则表达式功能,但上面提到的其他调整:

function startsWith($needle, $haystack) {

return preg_match('/^' . preg_quote($needle, '/') . '/', $haystack);

}

function endsWith($needle, $haystack) {

return preg_match('/' . preg_quote($needle, '/') . '$/', $haystack);

}

#2楼

简而言之:

function startsWith($str, $needle){

return substr($str, 0, strlen($needle)) === $needle;

}

function endsWith($str, $needle){

$length = strlen($needle);

return !$length || substr($str, - $length) === $needle;

}

#3楼

您可以使用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是一个更快的触摸开始 - 但它无法检查结束。

#4楼

为什么不以下?

//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)

将准确地返回真或假。

这看起来很奇怪,所有狂野的功能在这里都很猖獗。

#5楼

我意识到这已经完成了,但你可能想看一下strncmp因为它允许你把字符串的长度进行比较,所以:

function startsWith($haystack, $needle, $case=true) {

if ($case)

return strncasecmp($haystack, $needle, strlen($needle)) == 0;

else

return strncmp($haystack, $needle, strlen($needle)) == 0;

}

来源:oschina

链接:https://my.oschina.net/u/3797416/blog/3138854

php with函数,PHP中的startsWith()和endsWith()函数相关推荐

  1. python中endswith函数_Python中的startswith和endswith函数使用实例

    在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某 ...

  2. python endswith函数_Python中的startswith和endswith函数使用实例

    在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某 ...

  3. Python中的startswith和endswith函数使用实例

    Python中的startswith和endswith函数使用实例 在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数 ...

  4. python中函数startswith的用法_Python中的startswith和endswith函数使用实例

    在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某 ...

  5. strcompare php,PHP中的startswith()和endsWith()函数

    泛舟湖上清波郎朗 功能function substr_startswith($haystack, $needle) { return substr($haystack, 0, strlen($need ...

  6. python数据处理常用函数_Python中常用操作字符串的函数与方法总结

    Python中常用操作字符串的函数与方法总结 这篇文章主要介绍了Python中常用操作字符串的函数与方法总结,包括字符串的格式化输出与拼接等基础知识,需要的朋友可以参考下 例如这样一个字符串 Pyth ...

  7. php 与时间有关的函数,php中与时间相关的常用函数有哪些

    php中与时间相关的常用函数有:date_default_timezone_set().date_create().date_diff().date_timestamp_get().strtotime ...

  8. java怎么调用存储函数_java中调用存储过程或存储函数的方法

    java中调用存储过程或存储函数的方法 1.调用存储过程:CallableStatement clstmt = null;try {clstmt = conn.prepareCall("{c ...

  9. python中延时函数_python中实现延时回调普通函数示例代码

    python中实现延时回调普通函数示例代码 这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的 ...

  10. mysql 占比函数_MySQL中你必须了解的函数

    在学习MySQL的时候你会发现,它有非常多的函数,在学习的时候没有侧重.小编刚开始学习的时候也会有这个感觉.不过,经过一段时间的学习之后,小编发现尽管函数有很多,但是常用的却只有那几个.今天小编就把常 ...

最新文章

  1. 33篇顶会论文如何做到?北大施柏鑫:论文投稿到接收,不可不知的关键环节...
  2. linux cron读哪个文件,linux crontab 文件位置和日志位置
  3. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波7 - 直方图处理 - 直方图、归一化直方图
  4. 在VS中设置比较和谐的字体和颜色的方法
  5. NAS+CNN+Transformer=ViT-Res!MIT团队重磅开源ViT-Res,精度高于DeiT-Ti8.6%
  6. 从 CentOS 5.5 中精简出属于自己的专属Linux(二)
  7. Java的GUI学习八(键盘码查询器)
  8. 2019网易雷火笔试编程题
  9. SpringCloud基础学习
  10. 从孤独里找到一束光-2021
  11. maven下载Nexus私服jar包,报错Not authorized
  12. 古诗三百首(html)
  13. 【昊泽爷爷】六一儿童节礼物——学做简单机器人的工作台
  14. vue-生成二维码【生成、点击输入框内叉号移除生成的二维码、输入框聚焦】
  15. 垂直领域知识图谱_垂直知识图谱的构建与应用研究
  16. vue项目中数据更新页面不刷新问题
  17. AspNet2.0页面生命周期的各个事件细节
  18. 计算机网络课程设计小区组网,计算机网络课程设计-组建智能化小区局域网参考.doc...
  19. 网站内链优化,网站内部链接优化
  20. 当你的移动硬盘弄坏了你的文件该如何恢复呢

热门文章

  1. 我用代码做过的有趣的东西
  2. 杜邦家居五金建博会震撼上市
  3. 学生邮箱添加到macOS上的outlook邮箱客户端里。
  4. 解构VR:虚拟现实技术如何在情感与道德上影响社会?
  5. 这个PDF转PPT小妙招,PPT达人都知道!
  6. 国家标准征求意见稿出台,刷脸支付迎来新进展
  7. 揭秘KubeEdge边缘网络项目EdgeMesh:如何打造高速、安全、低延迟的互联网连接
  8. 网络协议学习:等价多路径路由ECMP
  9. 双金属复合圆管层间高温接触热阻测试方法的分析和选择
  10. Qt 多线程显示gif动态图