首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Strpos返回预期之外的其他结果-始终为真

strpos是PHP中的一个字符串函数,用于查找一个字符串中是否包含另一个子字符串,并返回子字符串在原字符串中的位置。

答案: strpos函数在查找子字符串时,如果找到了匹配的子字符串,则返回子字符串在原字符串中的起始位置(位置从0开始计数)。如果没有找到匹配的子字符串,则返回false。

然而,当strpos返回预期之外的其他结果-始终为真时,可能是由于以下原因之一:

  1. 参数传递错误:strpos函数接受三个参数,分别是要搜索的字符串、要搜索的子字符串和可选的起始搜索位置。如果参数传递错误,例如传递了错误的数据类型或顺序,就会导致返回预期之外的结果。确保正确传递参数可以避免这个问题。
  2. 字符串编码问题:strpos函数对于不同的字符串编码可能会有不同的行为。如果字符串使用的是多字节编码(如UTF-8),则可能需要使用mb_strpos函数来进行查找,以避免返回错误的结果。
  3. 子字符串重复出现:如果子字符串在原字符串中多次出现,strpos函数只会返回第一次出现的位置。如果你期望返回所有匹配位置,可以使用strpos的变种函数stripos,并结合循环来实现。

综上所述,要解决strpos返回预期之外的其他结果-始终为真的问题,需要确保正确传递参数、处理字符串编码问题,并根据具体需求选择合适的字符串查找函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

php一句话木马深度解析

什么是一句话木马 一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大作用。我们可以利用一句话木马来对主机进行渗透操作,最常见工具就是号称黑客之刃中国菜刀。...2.在获取返回结果时候,一定要加上自己标识,不然的话没法判断,我们把上面那个字符串解密之后结果是 echo 'success'; 我们需要加上类似于和这样标记,...等取到返回值,再利用下面的代码来获取我们想要返回值 mb_substr( $result , (mb_strpos($result,"") + mb_strlen(""...末尾的话 本来今天想多分享几篇来着,但是我家宽带不知道抽什么风,除了我网站之外其他网站都可以访问,一到我网站就提示ERR_CONNECTION_RESET,,所以说整篇文章我都是在离线状态下打的,...,源码以后再放出来 如无特殊说明《php一句话木马深度解析》博主MoLeft原创,转载请注明原文链接:https://moleft.cn/post-8.html

3.7K20
  • 闭包 + 局部作用域 === 如鱼得水

    foo()函数以一个函数对象作为返回值。在foo()函数执行后,其返回值被赋值给了变量fn并调用fn()。实际上只是通过不同标识符引用调用了这个被作为返回函数对象。...关于闭包,概念拎差不多,再说也就那样,这玩意还是要能悟到,不然还是会想不通。 下面说个闭包典型应用,for循环。...所以五个延迟函数在执行时都读到同一个值6变量i,最后结果最后打印结果也就是五个6。 理解上面的原因,需要理解两个知识点:js中同步异步执行顺序原理、作用域工作原理。...这其实就是闭包实现。一个函数可以始终访问到所处作用域中变量,而不管这个函数是否会在该作用域之外执行。...当函数可以始终记住并访问其所在作用域,即使该函数在该作用域之外执行,这种情况就产生了闭包。 闭包形成需要两要素:存在访问目标的局部作用域、函数始终保持对该作用域引用。

    60030

    PHP7新特性和变化

    " => false]); // 将除 MyClass 和 MyClass2 之外所有对象都转换为 __PHP_Incomplete_Class 对象 $data = unserialize($foo...; 预期 它使得在生产环境中启用断言零成本,并且提供当断言失败时抛出特定异常能力。...当启用这个特性时,传入参数或者函数返回结果要么是给定类型,要么是null #php5 function($a = null){ if($a===null) { return null;...但大小写不敏感常量会在使用中造成一点麻烦。所以,为了解决这个问题,PHP 7.3 废弃了大小写不敏感常量。 原先情况是: 类常量始终「大小写敏感」。...使用const关键字定义全局常量始终「大小写敏感」。注意此处仅仅是常量自身名称,不包含命名空间名部分,PHP 命名空间始终「大小写不敏感」。

    4K41

    《你不知道JavaScript》:闭包与局部作用域

    foo()函数以一个函数对象作为返回值。在foo()函数执行后,其返回值被赋值给了变量fn并调用fn()。实际上只是通过不同标识符引用调用了这个被作为返回函数对象。...fn()可以被正常执行,并且还是在被自己定义词法作用域之外执行。 这就是闭包神奇了。...关于闭包,概念拎差不多,再说也就那样,这玩意还是要能悟到,不然还是会想不通。 下面说个闭包典型应用,for循环。...所以五个延迟函数在执行时都读到同一个值6变量i,最后结果最后打印结果也就是五个6。 理解上面的原因,需要理解两个知识点:js中同步异步执行顺序原理、作用域工作原理。...当函数可以始终记住并访问其所在作用域,即使该函数在该作用域之外执行,这种情况就产生了闭包。 闭包形成需要两要素:存在访问目标的局部作用域、函数始终保持对该作用域引用。

    52320

    PHP代码安全杂谈

    一、精度绕过缺陷 理论 在用PHP进行浮点数运算中,经常会出现一些和预期结果不一样值,这是由于浮点数精度有限。...这就会造成混乱结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期 8,因为该结果内部表示其实是类似 7.9999999999999991118…。...一个简单例子 由于php对变量自动转换特性,这里面的 $a==$b 与 $c==$d 均为 所以页面输出结果: 一个深入例子 下面结合PHP 相等性比较缺陷再解释下会好懂一点: var_dump...strpos()函数:查找字符串在另一字符串中第一次出现位置,对大小写敏感。 这2个函数都是用来处理字符串,但是在传入数组参数后都将返回NULL。...password[]=gg ereg()函数是处理字符串,传入数组后返回NULL,NULL和 FALSE,是不恒等(===),满足第一个if条件;而strpos()函数也是处理字符串,传入数组后返回

    1.7K60

    php常用字符串查找函数strstr()与strpos()实例分析

    ==,这样才能达到预期效果,性能要比strstr要好,只是判断是否包含某个字符串就用这个了。...,如没找到则返回FALSE 3、该函数区分大小写,如果想要不区分大小写,请使用 stristr() 4、如果你仅仅想确定needle是否存在于haystack中请使用速度更快、耗费内存更少strpos...运行结果: @example.com name bool(false) mixed strpos ( string haystack , mixed needle [, int 1、haystack...,返回needle 存在于 haystack 字符串起始位置(注意字符串位置是从0开始,而不是从1开始),没找到则返回FALSE,但也可能返回等同于 FALSE 非布尔值 <?...= 不能像我们期待那样工作, // 因为 'a' 位置是 0。语句 (0 != false) 结果是 false。 if ($pos !

    1.6K31

    PHP strpos,strstr,strpbrk这几个函数有什么区别

    如果字符不存在,则返回false。 如果needle不是一个字符串,那么它将被转化为整型并且作为字符序号来使用。 ? strpos 查找字符串首次出现位置。 ?...对比两个函数内部实现,除了offset之外,其实际差别在于strstr最后返回了字符串,strpos返回是一个数。由于字符串返回时候涉及到字符串复制过程,因此会有速度和内存上损耗。...相对于上面两个函数,strpbrk相对粗暴些,直接两个循环,实现字符查找。在性能上,应该是这三个函数垫底了。 总结 以字符串ABCGCAC例。...strpos 返回是完整匹配查询字符串第一次出现位置。strpos('ABCGCAC','CA')返回结果是4。 strpbrk 返回是字符列表中匹配任意一个字符第一次出现之后字符串。...strpbrk('ABCGCAC','CA') 返回内容是ABCGCAC strstr 返回是完整匹配查询字符串第一次后出现后字符串,strstr('ABCGCAC','CA') 返回结果CAC

    91520

    php函数笔记

    strpos() 返回字符串在另一个字符串中第一次出现位置。 strpos 区别大小写strpos查找成功后则是返回是位置。因为位置有可能是0,所以判断查找失败使用===false更合适。...//$res数组,1规定取出元素开始位置。2需要返回数组数量。 define() 函数定义一个常量 define("GREETING","Hello world!")...e2:e3,若e1(非0),则此表达式e2值;若为假,则表达式e3 例如: preg_match('|Location: (.+)\r|', $src, $res); $songurl..."code": 200 } php处理: $eo='上面的json数据'; $obj=json_decode($eo,true); echo $obj['songs'][0]['mp3Url']; 结果返回...之外所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数. rawurlencode()功能和urlencode基本一样,采用是RFC1738编码,因此空格会编码%20 sprintf()

    1.2K20

    看代码学渗透 Day4 - strpos使用不当引发漏洞

    在上面这个例子中,strpos 函数返回查找到子字符串下标。如果字符串开头就是我们要搜索目标,则返回下标 0 ;如果搜索不到,则返回 false 。...在这道题目中,开发者只考虑到 strpos 函数返回 false 情况,却忽略了匹配到字符在首位时会返回 0 情况,因为 false 和 0 取反均为 true 。...我们尝试使用以下 payload ,观察 strpos 函数返回结果。 user= ?...在 sn 函数内部,会根据id到pwd_tmp表中判断是否存在对应临时密码记录,根据结果确定分支,走向 newmail 函数。...而恰好漏洞触发点就在这里,我们看看 第13行 至 第18行 代码,如果 ($send == 'N') 这个条件,通过 ShowMsg 打印出修改密码功能链接。

    1.4K10

    给PHP开发者讲讲PHP源码-第二部分

    尝试第一步,就是去PHP 5.4根目录然后在页面顶部搜索框输入strpos。搜索结果是一个很大列表,展示了strpos在PHP源码中出现位置。 因为这个结果对我们并没有太大帮助,我们使用一个小技巧:我们搜索"PHP_FUNCTION strpos"(不要漏了双引号,它们很重要),而不是strpos....这就是一个典型头文件(以.h后缀结尾文件)样子:单纯函数列表,函数在其他地方定义。事实上,我们对这些并不感兴趣,因为我们已经知道我们要找是什么。...php_memnstr返回指向needle在haystack第一次出现位置指针(这就是为什么found变量要定义char *,例如,指向字符指针)。...然后strpos函数会设置needle_char[1]0。这背后原因是因为,在 C里面,字符串是使用'\0'结尾,就是说,最后一个字符被设置NUL(编码0字符)。

    94880

    由定界符引发一些安全问题

    SELECT * FROM Users WHERE ((Username='1' or '1' = '1'))/*') AND (Password=MD5('$password'))) 这样一来让语句始终保证...返回连接到字符串中输入值,该字符串由定界符字符串分隔。 delimiter Required argument. Needs to be a string. 必填参数,且是一个字符串。...gender" LIMIT 1 OFFSET 1 -- 若以 private 列查询,并将 username 列聚合,结果在 django 中显示: {'private':'admin','username...下面就可以演示此漏洞: 我们定义一个数据库 django_sql 有表test_sql_userinfo,内容如下: 有表sql_admin,内容如下: 正常情况下,我们令定界符:-,返回结果如下...id"-- 返回结果如下: 成功注入出其他数据 这种注入虽然可控概率很小,但是依旧是个 SQ L 注入漏洞,而且是一个比较经典由于定界符问题引起注入 4、DOS 攻击 这个实际案例(CVE-2008

    1.2K20

    PHP7.+系列新特性和新变更

    返回值类型声明 增加了返回类型声明,类似参数类型。..." => false]); // 将除 MyClass 和 MyClass2 之外所有对象都转换为 __PHP_Incomplete_Class 对象 $data = unserialize($foo...预期 它使得在生产环境中启用断言零成本,并且提供当断言失败时抛出特定异常能力。...,B} 13.生成器支持返回表达式 它允许在生成器函数中通过使用 return 语法来返回一个表达式 (但是不允许返回引用值), 可以通过调用 Generator::getReturn() 方法来获取生成器返回值...echo $gen->getReturn(), PHP_EOL; # output //1 //2 //3 14.生成器委派 现在,只需在最外层生成其中使用yield from,就可以把一个生成器自动委派给其他生成器

    66330

    什么是SQL注入攻击,如何防范这种类型攻击?

    这样,SQL查询就会变成:SELECT * FROM users WHERE username = '' OR '1'='1' AND password = ''由于'1'='1'始终...,这个SQL查询将会返回所有用户信息,从而绕过了身份验证。...尽管结果显示空,但查询条件'1'='1'始终,攻击者可以通过不同条件语句来判断查询结果,达到盲注攻击目的。4....应该始终对用户输入进行验证和过滤,只接受符合预期格式数据。例如,可以使用正则表达式来检查输入是否匹配预期模式。应用程序还应该使用参数化查询或预编译语句,以保护用户输入不被直接拼接到SQL查询中。...在开发和维护应用程序时,始终要注意输入验证、过滤和参数化查询,以及使用安全API和框架。同时,尽量遵循最小权限原则,并定期更新和维护系统。

    1.6K30

    BUU-WEB-第一章

    //返回要查找字符串在别的字符串中首次出现位置 ); //mb_strpos(haystack,needle)...&& emmm::checkFile($_REQUEST['file'] 3.这里我们值传到emmm类里面的checkFile函数 这三个值通过&&逻辑与运算连接也就是要求这块函数返回值全为才能执行...if里面的文件包含代码,否则就执行else里面的图片 我们再来看看其他函数 //mb_strpos():返回要查找字符串在别一个字符串中首次出现位置 // mb_strpos (haystack...file=hint.php image.png flag现在出现字眼了,可能在根目录下面吧,根据源码,包含结果必须是file后面的参数能过checkFile检查,反向推一遍,这里面有两个函数 mb_substr...[强网杯 2019]随便注 image.png 姿势默认值1,我们提交得到了回显。

    54820

    如果让 strpos 查找一个整数类型数字会发生什么?

    每次数据来了,想要查找这个字符串中某个字符,上来就是使用strposstrpos用于查找字符串中某个子串第一次出现位置。 那么,如果不小心给strpos传入是一个整数类型又会怎么样呢?...上面得到是一个空字符串 查看php 源码中string.c文件,找到strpos代码。strpos对于非字符串类型数据使用php_needle_char做了一次类型转换,强制类型转换。 ?...所以当你传入585时候,使用char进行强转之后得到结果是字符串"I",所以实际上截取之后字符串长度0。...类型转换分为下列几种情况: 1、整形,长整型直接转成char类型 2、布尔值,分别转成字符'1','0',所以strpost('e1',true);返回内容1 3、double类型数据,先强转为长整型再转换成...char类型 4、对象则对对象id进行char转换 5、其他类型触发E_WARNING警告到这里就了解了为什么给一个整数,strpos会有意向不到结果

    80520
    领券