我如何编写两个接受字符串并返回以指定字符/字符串开头或结尾的函数?例如:$str='|apples}';echostartsWith($str,'|');//返回trueechoendsWith($str,'}');//在正则表达式函数之上返回true,但上面提到了额外的调整:functionstartsWith($needle,$haystack){returnpreg_match('/^'.preg_quote($needle,'/').'/',$haystack);}functionendsWith($needle,$haystack)){returnpreg_match('/'.preg_quote($needle,'/').'$/',$haystack);}简而言之:函数startsWith($str,$needle){returnsubstr($str,0,strlen($needle))===$needle;}functionendsWith($str,$needle){$length=strlen($针);返回!$长度||substr($str,-$length)===$needle;}您可以使用substr_compare函数来检查开始和结束:functionstartsWith($haystack,$needle){returnsubstr_compare($haystack,$needle,0,strlen($needle))===0;}functionendsWith($haystack,$needle){returnsubstr_compare($haystack,$needle,-strlen($needle))===0;}这应该是PHP7上最快的解决方案(基准脚本)选项之一。测试了8KB干草堆,各种长度的针以及完整、部分和不匹配的情况。strncmp是一个更快的触摸开始-但它无法检查结束。点击进入,免费领取优质PHP学习资料。为什么不跟随?//如何检查一个字符串是否以另一个字符串开头$haystack="valuehaystack";$needle="value";if(strpos($haystack,$needle)===0){echo"Found".$针。“在。。。之初”。$干草堆。"!";}输出:在valuehaystack开头找到的值!请记住,如果在干草堆中找不到针,strpos将返回false,并且当且仅当针在索引0(又名开头)处找到时,strpos才会返回0。下面是:$haystack="valuehaystack";$needle="haystack";//如果针的索引加上针的长度等于整个haystack的长度.if(strpos($haystack,$needle)+strlen($needle)===strlen($haystack)){echo"Found".$针。“在......的最后”。$干草堆。"!";}在这种情况下,不需要函数startsWith()as(strpos($stringToSearch,$doesItStartWithThis)===0)将准确返回true或false。奇怪的是,所有的野生特征都在这里猖獗。我知道这已经完成了,但是你可能想看看strncmp,因为它允许你比较字符串的长度,所以:($haystack,$needle,strlen($needle))==0;否则返回strncmp($haystack,$needle,strlen($needle))==0;}
