今天我遇到了一个小问题,当我创建一个非常快速的脚本来扫描//todo:
的用户指定目录中的行文件时...
所以我有这样的一句话:
if (stripos($data, '//todo:')) { //case-insensitive search ^^
//deal with the data appropriately
}
在任何文件中都没有找到//todo:
!这真是一个惊喜。我最终改变了这一行来删除双正斜杠(//
)并且它有效。虽然现在这也会匹配不包含此字符串的注释的行,但可能不常见(并且它可能永远不会发生在我身上),但仍然可能。
我不知道为什么会这样,并且非常感谢你的解释。
答案 0 :(得分:2)
也许这就是为什么?
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Note our use of ===. Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'";
} else {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
}
?
也许它与需要的愚蠢===运算符有关b / c ==无法正常工作。
答案 1 :(得分:0)
我刚刚运行此代码,它返回11(正如预期的那样)。
$data = "text test
//todo: fix me
text text";
echo stripos($data, '//todo:');
您确定$ data包含您认为它的功能吗?可能有一些字符编码问题或者可能有一些转义?