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;
}
?>
/* 这个函数返回字串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;
}
?>
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- php xml 入门学习资料
- PHP简单系统数据添加以及数据删除模块源文件下载
- php-accelerator网站加速PHP缓冲的方法