📄 00000015.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: thinkin (强强), 信区: Linux <BR>标 题: "In String" function <BR>发信站: BBS 水木清华站 (Thu Feb 17 10:58:35 2000) <BR> <BR><?php <BR>/* This function returns the position of string s1 within string s2. <BR> The position is 1 based. If s1 is not in s2, 0 is returned. <BR>*/ <BR>function InStr($s1, $s2) <BR>{ <BR> //Check for valid input <BR> if(!(is_string($s1) && is_string($s2))) return 0; <BR> $s1len = strlen($s1); <BR> $s2len = strlen($s2); <BR> //Check if s1 in s2 at all <BR> if(!ereg($s1, $s2)) return 0; <BR> //Resolve simple case <BR> if($s1 == $s2) return 1; <BR> //Set initial search limits <BR> $begin = 0; <BR> $end = $s2len - $s1len; <BR> //Initialize position <BR> $position = 0; <BR> //Do binary search of s2 for s1 <BR> //Check left side first to find first occurance of s1 <BR> //Check right side first to find last occurance of s1 <BR> while($end > $begin + 1) <BR> { <BR> $middle = ceil(($begin + $end) / 2); <BR> $leftBegin = $begin; <BR> $rightBegin = $middle + $s1len; <BR> $leftEnd = $middle; <BR> $rightEnd = $end + $s1len; <BR> //Check left first <BR> if(ereg($s1, substr($s2, $leftBegin, $rightBegin - $leftBegin))) <BR> { <BR> $end = $middle; <BR> } <BR> else //(ereg($s1, substr($s2, $leftEnd, $rightEnd - $leftEnd))) <BR> { <BR> $position += $middle - $begin; <BR> $begin = $middle; <BR> } <BR> } <BR> //Resolve 1 off problems introduced by ceil <BR> if(ereg($s1, substr($s2, $end, $s1len))) $position++; <BR> //Return position 1 based <BR> return $position + 1; <BR>} <BR>?> <BR>-- <BR> <BR>人生到处知何似? <BR> 应似飞鸿踏雪泥。 <BR> 泥上偶然留指爪, <BR> 鸿飞那复计东西! <BR> <BR> <BR>※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.37.191] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -