您的位置:首页 > 编程语言 > PHP开发

php查询子字符串位置代码

2013-10-20 22:02 309 查看
<?php 
/* 这个函数返回字串S1在字串S2中的位置。如果S2中没有包含S1,那么就返回0 */ 
function InStr($s1, $s2) 

//检查是否合法输入
if(!(is_string($s1) && is_string($s2))) return 0; 

$s1len = strlen($s1); 
$s2len = strlen($s2); 

//检查S1是否在S2中 
if(!ereg($s1, $s2)) return 0; 

//如果是一个简单的实例 
if($s1 == $s2) return 1; 

//设置最小搜索次数 
$begin = 0; 
$end = $s2len - $s1len; 

//初始搜索位置 
$position = 0; 

//做一个s2 在 s1的二进制的搜索 
while($end > $begin + 1) 

$middle = ceil(($begin + $end) / 2); 
$leftBegin = $begin; 
$rightBegin = $middle + $s1len; 
$leftEnd = $middle; 
$rightEnd = $end + $s1len; 

//先检查左边
if(ereg($s1, substr($s2, $leftBegin, $rightBegin - $leftBegin))) 

$end = $middle; 

else //(ereg($s1, substr($s2, $leftEnd, $rightEnd - $leftEnd))) 

$position += $middle - $begin; 
$begin = $middle; 



if(ereg($s1, substr($s2, $end, $s1len))) $position++; 

//返回所在的位置
return $position + 1; 

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP