- <?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查询子字符串位置代码
最新推荐文章于 2021-10-03 20:18:20 发布