目录
InString 函数程序


<?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;
}
?>



目录