2017-01-10 39 views
-1

我需要在字符串中找到特殊模板。这一个字符串是:为什么“在字符串中找到”在php中不起作用?

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

当我尝试检查@if在字符串PHP函数strpos,它给了我false。链接到沙盒: http://sandbox.onlinephpfunctions.com/code/f54c3a1c0124086833deccf4fbcb5e07b656fa93

但它在'@if'之前的字符串有空格时正常工作。为什么? http://sandbox.onlinephpfunctions.com/code/55b2046ba7f4e1fdc88cf5fd4113e681b7dd4a75

回答

4

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

如果你想确保该字符串完全没有发现,甚至没有在零的位置,你需要用严格的比较操作:

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

为[strpos文档】在上述(HTTP:/ /php.net/manual/en/function.strpos.php),你应该使用'==='运算符来检查strpos是否真的返回false。 – AnthonyB

+0

OMG为什么我这么愚蠢。谢谢! – Deromanenko

相关问题