PHP strpos hakkında soru

2 Cevap

Ben sadece anlamaya çalışıyorum ...

$mystring = "/abc/def/hij";
$find = "/abc";

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) >= 0) {
    echo("found");
} else {
    echo("not found");
}

this will give : 0 found

$mystring = "/abc/def/hij";
$find = "/fffff";

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) >= 0) {
    echo("found");
} else {
    echo("not found");
}

output : [blank] found

Şimdi karşılaştıncının değiştirmek ve kullanırsanız "! = False" yerine "> = 0"

$mystring = "/abc/def/hij";
$find = "/fffff";

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) **!= false**) {
    echo("found");
} else {
    echo("not found");
}

Bu benim dize başında alt dizeyi baktığınızda dışında, hemen hemen tüm durumlarda çalışır. Örneğin, bu irade çıktı "bulunamadı":

$mystring = "/abc/def/hij";
$find = "/abc";

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) != false) {
    echo("found");
} else {
    echo("not found");
}

Peki nasıl bu işi yapabilir? Ben sadece bir alt bir dize varsa bilmek istiyorum, ve substring başlangıç ​​veya tüm dize ise bu "gerçek" bana vermelidir ...

2 Cevap

!== operatörünü kullanarak bir test. Aksine bu sadece değerleri için, türleri ve değerleri karşılaştırmak olacaktır:

$mystring = "/abc/def/hij";
$find = "/abc";

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) !== false) {
    echo("found");
} else {
    echo("not found");
}

Ben sorunun ne olduğunu buldum ... Ben kullanmaya gerek! == Yerine! = ... Aaaah, php yanlış.