Başka bir dize dize bulma

3 Cevap php

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.

3 Cevap

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ü 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";
if(stripos($str,'mod 1')!==false) $hasmod1 = true;
else $hasmod1 = false;

Bakım !== Bu önemli bir parçasıdır.

Bkz http://php.net/manual/en/function.stripos.php