Ben böyle bir dizesi vardır: $str1 = "mod 1 + mode 2 + comp 1 + toto".
I mod 1 $str1 ise test etmek istiyorum. Ben kullanılan strpos, ancak bu fonksiyon yardımcı olmuyor.
strpos returns the position of the occurrence in the string starting with 0 or false aksi. Aşağıdaki gibi sadece bir boolean dönüşüm kullanarak yaygın bir hatadır:
$str1 = "mod 1 + mode 2 + comp 1 + toto";
if (strpos($str, "mod 1")) {
// found
}
Bu durumda strpos 0 dönecektir Ama 0 Boole dönüştürülür çünkü false.:
var_dump((bool) 0 === false); // bool(true)
Yani sıkı bir karşılaştırma kullanmak gerekir:
$str1 = "mod 1 + mode 2 + comp 1 + toto";
if (strpos($str, "mod 1") !== false) {
// found
}
Bu belgeler önerdiği şeyleri de:
Warning Bu işlev mantıksal FALSE döndürebilir, ama aynı zamanda 0 gibi, YANLIŞ ya da "" değerlendirir mantıksal olmayan bir değer döndürebilir. Daha fazla bilgi için Booleans bölümüne okuyunuz. Bu işlevin dönüş değeri sınamak için
===operatörü a> kullanın.
Sen strstr fonksiyonu yararlanabilirler.
$str1 = "mod 1 + mode 2 + comp 1 + toto";
$str2 = "mod 1";
if(strstr($str1,$str2) !== false)
echo "Found $str2 in $str1\n";