为什么"在字符串中找到"在PHP中没有正确的工作?

时间:2017-01-10 07:08:05

标签: php string

我需要在字符串中找到特殊模板。其中一个字符串是:

@if($fabric->id == $product->fabric_id)<br />\r

当我尝试使用php函数 strpos 检查字符串中的@if时,它会给我false。链接到沙箱: http://sandbox.onlinephpfunctions.com/code/f54c3a1c0124086833deccf4fbcb5e07b656fa93

但是当字符串在&#39; @ if&#39;之前有空格时,它可以正常工作。为什么? http://sandbox.onlinephpfunctions.com/code/55b2046ba7f4e1fdc88cf5fd4113e681b7dd4a75

1 个答案:

答案 0 :(得分:4)

strpos()返回您搜索的字符串的索引。在第一种情况下,它是0(零),因为@if在最开始。当前面有空格时,位置为1(一)。令你困惑的是,条件语句中PHP(0)也被PHP解释为false,而1(一)被解释为true

如果你想确保根本找不到字符串,甚至没有找到零位置,你需要使用严格的比较运算符:

if (strpos($str, '@if') === false) { echo 'Not found'; }