Die PHP-Sprache wird seit vielen Jahren von Webentwicklern aktiv eingesetzt. Wie in jeder Softwaresprache gibt es auch in PHP Best Practices und wenig bekannte Fehler/Missbräuche. In dieser Lektion PHP strpos() Wir werden darüber sprechen, wie man seine Funktion am besten nutzt und über wenig bekannte Informationen.

Nicht mit Wahr vergleichen

in PHP-Sprache strpos() Die Funktion gibt die Startposition des gesuchten Textes zurück. strpos() Wenn wir die Funktion verwenden, während wir suchen, ob das Ziel im Text gefunden wird, wird das Ziel gefunden 1, wenn nicht gefunden 0 gibt den Code zurück. Wenn das Ziel ganz am Anfang des gesuchten Textes gefunden wurde, 0 kehrt zurück. Dies ist nicht gerade ein Fehler in PHP, aber wenn in der wie im folgenden Beispiel geschriebenen if-Abfrage nach dem Vorhandensein des Zieltexts gesucht wird, steht der Zieltext jedoch am Anfang. 0 Es wird einen Fehler in der Software verursachen, da es zurückkehrt.

Beispiel:

$data = "Onur Özden Web Çözümleri";
$search = "Onur";

if (strpos($data, $search) === true) {
    echo "Metinde '{$search}' ifadesi geçiyor";
} else { // Bu blok çalışacak
    echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçmiyor

Im Beispiel hat der else-Block funktioniert. Das ist falsch! Weil der Name „Onur“ in dem Text erwähnt wird, den wir im Beispiel verwendet haben. Das liegt daran strpos() Wenn in der Funktion der gesuchte Text am Anfang der Daten steht, heißt die Funktion „0 ist die Antwort zurückzugeben. Wie können wir dieses Problem überwinden? Müssen wir eine andere Funktion verwenden? Nein. Das ist nicht nötig. Es gibt eine sehr einfache Lösung für dieses Problem. Schauen wir uns das Beispiel genauer an.

$data = "Onur Özden Web Çözümleri";
$search = "Onur";

if (strpos($data, $search) !== false) { // Bu blok çalışacak
    echo "Metinde '{$search}' ifadesi geçiyor";
} else {
    echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçiyor

In diesem Beispiel funktionierte der Vergleich im if-Block korrekt. Der Grund dafür ist, dass alle gängigen Programmiersprachen, einschließlich PHP, und sogar Softwarelogik verwendet werden 0 Wert false, 1 Wert true gilt als. Da der Rückgabewert 0 ist, wird bei einem booleschen Typvergleich im if-Block der Wert 0 als falsch verarbeitet und dieser Fehler tritt auf.

Verwenden Sie beim Vergleich mit Falsch einen strengen Vergleich

Es gibt noch ein weiteres sehr wichtiges Detail, auf das wir im vorherigen Beispiel achten müssen. Wenn wir statt eines strengen Vergleichs einen Gleichheitsvergleich (losen Vergleich) durchführen, wird derselbe Fehler erneut auftreten. Da der Gleichheitsvergleich nicht die Art der Daten in Frage stellt, stellt der Äquivalenzvergleich auch die Art der Daten in Frage. Schauen wir uns ein falsches Beispiel dessen an, worüber wir sprechen. Machen wir ein Beispiel ohne Äquivalenzvergleich und sehen wir uns das Ergebnis an

$data = "Onur Özden Web Çözümleri";
$search = "Onur";

if (strpos($data, $search) != false) {
    echo "Metinde '{$search}' ifadesi geçiyor";
} else { // Bu blok çalışacak
    echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçmiyor

Wir können die Fallsensitivität verwalten

Die Funktion strpos() berücksichtigt standardmäßig die Groß-/Kleinschreibung. Wenn wir diese Empfindlichkeit entfernen möchten, müssen wir die Funktion „stripos()“ verwenden. Schauen wir uns ein Beispiel der Funktion „stripos()“ an:

$data = "Onur Özden Web Çözümleri";
$search = "onur";

if (stripos($data, $search) !== false) {  // Bu blok çalışacak
    echo "Metinde '{$search}' ifadesi geçiyor";
} else {
    echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçiyor

Mit der Funktion strpos() können wir überprüfen, ob der gesuchte Text mehr als einmal vorkommt

1. Beispiel:

Mit der Funktion strpos() können wir überprüfen, wie oft der Zieltext in den Daten vorkommt. Im ersten Beispiel zeigen wir den kreativen, aber einfacheren und grundlegenden Weg, dies zu tun, und im zweiten Beispiel zeigen wir den besten Weg, der viel praktischer ist.

$data = "Onur Özden Web Çözümleri, Onur Özden tarafından kurulmuştur. Onur Özden ve ekibi ile web yazılım geliştirme, wordpress teknik destek ve seo hizmetleri sunar.";
$search = "Onur";

// undefined hatası almamak için değişkenleri tanımla ve varsayılan olarak 0 değerini ver;
$position = 0;
$count = 0;

while (($position = strpos($data, $search, $position)) !== false) {
    $count++; // Kaçıncı kez geçtiğini say
    $position++; // Sonraki arama için pozisyonu artır

}

// Sonucu yazdır
echo "Veri içerisinde toplam {$count} adet '{$search}' kelimesi geçiyor<br>";

// Çıktı: Veri içerisinde toplam 3 adet 'Onur' kelimesi geçiyor

2. Beispiel:

$data = "Onur Özden Web Çözümleri, Onur Özden tarafından kurulmuştur. Onur Özden ve ekibi ile web yazılım geliştirme, wordpress teknik destek ve seo hizmetleri sunar.";
$search = "Onur";

// substr_count fonksiyonu ile $search ifadesinin $data içindeki toplam sayısını hesapla
$count = substr_count($data, $search);

// veri içerisinde hedef kelime geçmiyorsa "0 adet geçiyor" gibi anlamsız bir ifade çıktılanmaması için koşul
if ($count > 0) { // veride hedef ifade geçtiği için bu blok çalışacak
    echo "Veri içerisinde toplam {$count} adet '{$search}' kelimesi geçiyor";
} else {
    echo "Veri içerisinde '{$search}' kelimesi geçmiyor.";
}
// Çıktı: Veri içerisinde toplam 3 adet 'Onur' kelimesi geçiyor

substr_count() Kurz gesagt berechnet die Funktion, wie viele Subtexte im Ziel übergeben werden und wie oft. Eine ausführliche Dokumentation und Beispiele dieser Funktion finden Sie hier -> https://www.php.net/manual/function.substr-count.php

Über strpos()

In diesem Artikel strpos() Wir haben gelernt, wie wir seine Funktion optimal nutzen und den häufigsten Missbrauch beheben können. strpos() mit seiner Funktion stripos() Und substr_count() Wir haben auch ihre Funktionen kennengelernt. Bleiben Sie gespannt auf den Rest unserer Serie über qualitativ hochwertige Codierungsansätze.