龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php查询子字符串位置代码

时间:2014-06-26 15:15来源:网络整理 作者:网络 点击:
分享到:
php查询子字符串位置代码 ```phplt;?php /* 这个函数返回字串S1在字串S2中的位置。如果S2中没有包含S1,那么就返回0 */ function InStr($s1, $s2) { //检查是否合法输入 if(!(is_s
<?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; 
} 
?> 
精彩图集

赞助商链接