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));//从第一个字符串减去第二个字符串长度处开始判断
}
}