大家好,欢迎来到IT知识分享网。
php使用strpos函数判断字符串中是否包含某字符的方法详解
strpos定义和用法
strpos() 函数查找字符串在另一字符串中第一次出现的位置。
注释:strpos() 函数对大小写敏感。
注释:该函数是二进制安全的。
相关函数
语法
strpos(string,find,start)
| 参数 | 描述 |
|---|---|
| string | 必需。规定要搜索的字符串 |
| find | 必需。规定要查找的字符串 |
| start | 可选。规定在何处开始搜索 |
技术细节
| 返回值 | 详解 |
|---|---|
| 0 | 返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。 |
注释:字符串位置从 0 开始,不是从 1 开始。 |
踩坑实例
$a = 'abcd'; $b = 'b'; $c = 'a'; echo strpos($a,$b) ? '原来是兄弟<br/>' : '非我族类,砍ta<br/>'; echo strpos($a,$c) ? '原来是兄弟<br/>' : '非我族类,砍ta<br/>'; echo strpos($a,$c)!=false ? '原来是兄弟' : '非我族类,砍ta';
结果显示:
$c 命名是$a的一部分,结果当成异类,连着被砍了两次,冤枉
防坑攻略
stripos()返回的是字符串在另一个字符串出现的位置,而这个位置是从0开始计算的。 c 在 c在 c在a中出现的位置是0,因此被砍。
所以,正确的判断应该是:
$a = 'abcd'; $c = 'a'; echo strpos($a,$c)!==false ? '原来是兄弟' : '非我族类,砍ta';
返回值
以整型返回位置信息。如果没找到要查询的字符串,strpos() 将返回布尔型的 FALSE 值。
也就是说,此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值,例如 0 或 “”(空串)。因此,在判断的时候,需要使用恒等于’=‘或者恒不等于’=‘来判断,千万不能省去一个’=‘号。
strpos和strstr区别
判断一个字符串是否在另一个字符串中还有一个函数:strstr()。与strpos()有一点不同是,该函数的返回值是false或者字符串的一部分。如果单纯的判断两个字符串的包含关系,最好使用strpos,因为速度更快、耗费内存更少。
strpos用法扩展
实现匹配关键词,加粗标红高亮
$str_ay = ['我的签约的合同包含qipa', '奇葩和qipa都有合作', '只合作了天地', '我是qipa250', '奇葩-250呀', '啥也不是']; echo "str_ay<pre>"; print_r($str_ay); $remark_ay = ['奇葩', 'qipa', '250']; $remark_list = []; foreach ($str_ay as $strk => $strv) {
$res_title_key = $strv; foreach ($remark_ay as $rmk => $rmv) {
if (strpos($strv, $rmv) === false) {
//echo $strv . "不包含" . $rmv . '<br>'; continue; } //加粗标红 $red_key = "<b style='color:#FF0000'>" . $rmv . "</b>"; $res_title_key = str_ireplace($rmv, $red_key, $res_title_key); //赋值给数组 $remark_list[$strk] = $res_title_key; } } echo "remark_list<pre>"; print_r($remark_list);
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114940.html
