啥东西都张罗

施瑞琦

PHP模拟实现Java的endsWith

      Java中的startsWith和endsWith方法,在filter的功能实现中很方便,PHP可以用strncmp() 实现startsWith,但是无法实现endsWith,有些人会用正则来实现,但大多数人都不喜欢正则表达式的操作。

      这里我通过一个叫substr_compare的方法实现(同时他也能实现startsWith)。

 

定义和用法

substr_compare() 函数从指定的开始长度比较两个字符串。

该函数返回:

  • 0 - 如果等两字符串相
  • <0 - 如果 string1 (从开始位置)小于 string2
  • >0 - 如果 string1 (从开始位置)大于 string2

语法

substr_compare(string1,string2,startpos,length,case)
参数 描述
string1 必需。规定要比较的第一个字符串。
string2 必需。规定要比较的第二个字符串。
startpos 可选。规定在 string1 中的何处开始比较。
length 可选。规定在 string1 中参与比较的字符数。
case 可选。规定是否指定大小写比较。默认是 FALSE (对大小写敏感)。

 

 

使用substr_compare重写后的startsWith和endsWith如下

 

function startsWith(){
       $string1 = "XXXX";
       $string2 = "XXXX";
       if(strlen($string1)<strlen($string2)){  //若第一个字符串长度小于第二个的时候,必须指定返回false,
            return false;                                   //否则substr_compare遇到这种情况会返回0(即相当,与事实不符合)
        }else{
            return !substr_compare($string1,$string2,0,strlen($string2));//当第一个长度大于第二个时才开始判断
        }
}

 

function endsWith(){
       $string1 = "XXXX";
       $string2 = "XXXX";
       if(strlen($string1)<strlen($string2)){  //若第一个字符串长度小于第二个的时候,必须指定返回false,
            return false;                                   //否则substr_compare遇到这种情况会返回0(即相当,与事实不符合)
        }else{
            return !substr_compare($string1,$string2,strlen($string1)-strlen($string2),strlen($string2));//从第一个字符串减去第二个字符串长度处开始判断
        }
}

阅读更多
个人分类: PHP
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭