本文为大家分析了 PHP中strpos、strstr和stripos、stristr函数,供大家参考,具体内容如下
strpos
返回needle第一次出现在haystack的位置。如果在haystack中找不到needle,则返回FALSE。 needle,如果needle不是字符串,它会被转换成整型数值并赋值为该数值的ASCII字符。请看下面例子。 例子 <div class="jb51code"> if (Z_TYPE_P(needle) == IS_STRING) { // 调用PHP_memnstr函数查找needle
<pre class="brush:PHP;">
$str = "hello";
$pos = strpos($str,111);
// 111的ASCII值是o,因此$pos = 4
strpos核心源码
if (!Z_STRLEN_P(needle)) {
PHP_error_docref(NULL TSRMLS_CC,E_WARNING,"Empty needle");
RETURN_FALSE;
}
found = PHP_memnstr(haystack + offset,Z_STRVAL_P(needle),Z_STRLEN_P(needle),haystack + haystack_len);
} else {
// 如果不是字符串,转换成数字并赋值为该数字的ASCII字符。
if (PHP_needle_char(needle,needle_char TSRMLS_CC) != SUCCESS) {
RETURN_FALSE;
}
//设置结束字符
needle_char[1] = 0;
found = PHP_memnstr(haystack + offset,needle_char,1,haystack + haystack_len);
}
}