Methode 1: Verwendung der Funktion strpos()
zur Überprüfung, ob ein PHP-String einen Substring enthält
Die Funktion strpos()
ist eine eingebaute PHP-Funktion, mit der Sie überprüfen können, ob ein String einen Substring enthält. Sie gibt den Index des ersten Vorkommens des Substrings im String zurück oder false
, wenn der Substring nicht gefunden wird.
Funktionsweise der strpos()
Funktion
Die Funktion strpos()
nimmt zwei Parameter:
$haystack
: Der zu durchsuchende String.$needle
: Der zu suchende Substring.
Sie gibt eine Ganzzahl zurück, die den Index des ersten Vorkommens der Nadel im Heuhaufen darstellt, oder false
, wenn die Nadel nicht gefunden wird.
Beachten Sie, dass strpos()
eine Suche unter Berücksichtigung der Groß- und Kleinschreibung durchführt. Das bedeutet, dass bei der Suche nach dem Substring zwischen Groß- und Kleinbuchstaben unterschieden wird.
Hier ist ein Beispiel für die Verwendung von strpos()
, um zu überprüfen, ob ein String ein Wort enthält:
$word = "fox";
$mystring = "The quick brown fox jumps over the lazy dog";
// Überprüfen, ob der String das Wort enthält
if (strpos($mystring, $word) !== false) {
echo "Wort gefunden!";
} else {
echo "Wort nicht gefunden!";
}
In diesem Code:
- Wir setzen die Variable
$word
als den zu suchenden Substring, der "fox" ist. - Wir haben auch die Variable
$mystring
, die den Satz enthält, in dem wir nach dem Wort suchen wollen. - Wir verwenden die Funktion
strpos()
, um zu überprüfen, ob$mystring
$word
enthält.- Wenn das Wort gefunden wird, gibt
strpos()
den Index seines ersten Vorkommens zurück. - Wenn das Wort nicht gefunden wird, gibt
strpos()
false
zurück.
- Wenn das Wort gefunden wird, gibt
- Die Bedingung
strpos($mystring, $word) !== false
prüft, ob der zurückgegebene Wert nichtfalse
ist.- Wenn das Wort gefunden wird, ist die Bedingung wahr und der Code im if-Block wird ausgeführt, wodurch "Wort gefunden!" ausgegeben wird.
- Wenn das Wort nicht gefunden wird, wird der else-Block ausgeführt und "Wort nicht gefunden!" ausgegeben.
Beispiel
Nehmen wir an, Sie haben ein Formular auf Ihrer Website, in das Benutzer ihre E-Mail-Adressen eingeben können. Sie möchten die E-Mail-Adressen überprüfen, um sicherzustellen, dass sie von einer bestimmten Domain, wie "example.com", stammen. Hier ist, wie Sie strpos()
verwenden können, um zu überprüfen, ob die E-Mail-Adresse die Domain enthält:
$email = "user@example.com";
$domain = "example.com";
if (strpos($email, $domain) !== false) {
echo "Gültige E-Mail-Domain!";
} else {
echo "Ungültige E-Mail-Domain!";
}
In diesem Beispiel überprüfen wir, ob der $email
-String den $domain
-Substring enthält. Wenn ja, betrachten wir die E-Mail-Adresse als gültig und geben "Gültige E-Mail-Domain!" aus. Wenn nicht, geben wir "Ungültige E-Mail-Domain!" aus.
Unterschiede zwischen den Funktionen strpos()
und stripos()
PHP hat auch die Funktion stripos()
, die ähnlich wie strpos()
ist, aber eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchführt. Das bedeutet, dass stripos()
bei der Suche nach dem Substring nicht zwischen Groß- und Kleinbuchstaben unterscheidet.
Sie würden strpos()
verwenden, wenn Sie eine Suche mit Berücksichtigung der Groß- und Kleinschreibung durchführen müssen und die genaue Schreibweise des Substrings übereinstimmen soll. Sie würden stripos()
verwenden, wenn die Schreibweise des Substrings keine Rolle spielt und Sie den Substring unabhängig von seiner Schreibweise finden möchten.
Hier ist ein Beispiel, um den Unterschied zu zeigen:
$word = "Fox";
$mystring = "The quick brown fox jumps over the lazy dog";
if (strpos($mystring, $word) !== false) {
echo "Wort mit strpos() gefunden!";
} else {
echo "Wort mit strpos() nicht gefunden!";
}
if (stripos($mystring, $word) !== false) {
echo "Wort mit stripos() gefunden!";
} else {
echo "Wort mit stripos() nicht gefunden!";
}
In diesem Fall:
strpos()
würde "Wort nicht gefunden!" zurückgeben, weil es eine Suche mit Berücksichtigung der Groß- und Kleinschreibung durchführt und der Substring "Fox" (mit einem Großbuchstaben "F") nicht im String existiert.stripos()
würde "Wort gefunden!" zurückgeben, weil es eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchführt und den Substring "fox" (mit einem Kleinbuchstaben "f") im String findet.
Vergleich von strpos()
mit anderen String-Suchfunktionen
PHP verfügt über weitere Funktionen zum Suchen in Strings, wie strstr()
, stristr()
, strrchr()
und strpbrk()
. Hier ist ein Vergleich dieser Funktionen:
Funktion | Beschreibung | Rückgabe |
---|---|---|
strpos() |
Findet die Position des ersten Vorkommens eines Substrings | Index des ersten Vorkommens oder false |
strstr() |
Findet das erste Vorkommen eines Substrings | Substring ab dem ersten Vorkommen oder false |
stristr() |
Groß-/Kleinschreibung ignorierende Version von strstr() |
Substring ab dem ersten Vorkommen oder false |
strrchr() |
Findet das letzte Vorkommen eines Zeichens | Substring ab dem letzten Vorkommen oder false |
strpbrk() |
Sucht in einem String nach einem von mehreren Zeichen | Substring ab dem ersten Vorkommen oder false |
Beispiel
$mystring = "The quick brown fox jumps over the lazy dog";
// Verwendung von strpos()
$position = strpos($mystring, "fox");
echo "Position von 'fox' mit strpos(): " . $position . "\n";
// Verwendung von strstr()
$substring = strstr($mystring, "brown");
echo "Substring ab 'brown' mit strstr(): " . $substring . "\n";
// Verwendung von stristr()
$substring = stristr($mystring, "JUMPS");
echo "Substring ab 'JUMPS' mit stristr(): " . $substring . "\n";
// Verwendung von strrchr()
$substring = strrchr($mystring, "o");
echo "Substring ab dem letzten 'o' mit strrchr(): " . $substring . "\n";
// Verwendung von strpbrk()
$substring = strpbrk($mystring, "aeiou");
echo "Substring ab dem ersten Vokal mit strpbrk(): " . $substring . "\n";
Ausgabe:
Position von 'fox' mit strpos(): 16
Substring ab 'brown' mit strstr(): brown fox jumps over the lazy dog
Substring ab 'JUMPS' mit stristr(): jumps over the lazy dog
Substring ab dem letzten 'o' mit strrchr(): og
Substring ab dem ersten Vokal mit strpbrk(): e quick brown fox jumps over the lazy dog
Methode 2: Überprüfung, ob ein String ein Wort enthält, mit str_contains()
in PHP 8
PHP 8 führte eine neue Funktion namens str_contains()
ein, die es einfacher macht zu überprüfen, ob ein String einen Substring enthält. Diese Funktion vereinfacht die Suche nach einem bestimmten Wort innerhalb eines Strings und verbessert die Lesbarkeit und Leistung des Codes.
Die Funktion str_contains()
Die Funktion str_contains()
ist neu in PHP 8 und ermöglicht es Ihnen, zu überprüfen, ob ein String einen Substring enthält. Sie gibt einen booleschen Wert zurück, der anzeigt, ob der Substring innerhalb des Strings gefunden wurde.
Diese Funktion bietet im Vergleich zur Verwendung von strpos()
oder stripos()
, die weitere Überprüfungen des zurückgegebenen Wertes erfordern, eine einfachere Möglichkeit, diese häufige Aufgabe durchzuführen.
Syntax und Verwendung von str_contains()
Die Funktion str_contains()
hat folgende Syntax:
str_contains(string $haystack, string $needle): bool
$haystack
: Der zu durchsuchende String.$needle
: Der zu suchende Substring.
Die Funktion gibt true
zurück, wenn $needle
innerhalb von $haystack
gefunden wird, und false
, wenn nicht.
Hier ist ein Beispiel für die Verwendung von str_contains()
zur Überprüfung, ob ein String ein bestimmtes Wort enthält:
$text = "The quick brown fox jumps over the lazy dog";
$word = "fox";
if (str_contains($text, $word)) {
echo "Das Wort '$word' wurde im Text gefunden.";
} else {
echo "Das Wort '$word' wurde im Text nicht gefunden.";
}
In diesem Beispiel überprüft str_contains()
, ob der String $text
das Wort $word
enthält. Da das Wort "fox" im Text vorkommt, gibt die Funktion true
zurück, und die Meldung "Das Wort 'fox' wurde im Text gefunden." wird ausgegeben.
Vorteile der Verwendung von str_contains()
gegenüber anderen Methoden
Die Verwendung von str_contains()
hat Vorteile gegenüber anderen Methoden wie strpos()
und stripos()
:
-
Bessere Lesbarkeit: Der Funktionsname
str_contains()
zeigt deutlich seinen Zweck, was den Code lesbarer macht. Es entfällt die Notwendigkeit weiterer Überprüfungen des zurückgegebenen Wertes, da ein boolescher Wert zurückgegeben wird. -
Einfachheit: Mit
str_contains()
können Sie in einem Funktionsaufruf überprüfen, ob ein String einen Substring enthält. Sie müssen den zurückgegebenen Wert nicht mitfalse
oder0
vergleichen, wie es beistrpos()
undstripos()
erforderlich ist. -
Bessere Leistung: Die Funktion
str_contains()
ist auf Leistung ausgelegt und in den meisten Fällen schneller als die Verwendung vonstrpos()
oderstripos()
. Sie vermeidet die Rückgabe der Position des Substrings, die nicht benötigt wird, wenn Sie nur wissen möchten, ob der Substring existiert.
Methode 3: Verwendung regulärer Ausdrücke zur Überprüfung, ob ein PHP-String ein bestimmtes Wort enthält
Reguläre Ausdrücke (Regex) sind ein Werkzeug zur Arbeit mit Strings in PHP. Sie ermöglichen es Ihnen, nach Mustern in einem Text zu suchen, nicht nur nach bestimmten Wörtern, was sie flexibel für String-Manipulationsaufgaben macht.
Verwendung von preg_match()
zur Überprüfung, ob ein String ein Wort enthält
Die Funktion preg_match()
in PHP ermöglicht es Ihnen zu überprüfen, ob ein String einem Regex-Muster entspricht. Sie können dies verwenden, um zu überprüfen, ob ein String ein bestimmtes Wort enthält.
Die Funktion preg_match()
hat folgende Syntax:
preg_match(string $pattern, string $subject, array &$matches = null, int $flags = 0, int $offset = 0): int|false
$pattern
: Das zu suchende Regex-Muster.$subject
: Der zu durchsuchende String.$matches
: (Optional) Ein Array, das mit den Suchergebnissen gefüllt wird.$flags
: (Optional) Flags zur Modifikation des Suchverhaltens.$offset
: (Optional) Der Offset im String, an dem die Suche beginnen soll.
Die Funktion gibt die Anzahl der gefundenen Übereinstimmungen zurück (0 oder 1) oder false
bei einem Fehler.
Hier ist ein Beispiel für die Verwendung von preg_match()
zur Überprüfung, ob ein String ein Wort enthält:
$text = "The quick brown fox jumps over the lazy dog";
$word = "fox";
$pattern = "/\b$word\b/";
if (preg_match($pattern, $text)) {
echo "Das Wort '$word' wurde im String gefunden.";
} else {
echo "Das Wort '$word' wurde im String nicht gefunden.";
}
In diesem Code:
- Die Variable
$text
enthält den zu durchsuchenden String. - Die Variable
$word
enthält das zu suchende Wort. - Die Variable
$pattern
enthält das Regex-Muster. Es verwendet den\b
-Anker, um Wortgrenzen zu markieren, sodass nur ganze Wörter gefunden werden (also "fox" würde nicht "foxes" finden). preg_match()
überprüft, ob das$pattern
im$text
gefunden wird.- Wenn eine Übereinstimmung gefunden wird, gibt es 1 zurück, und die Meldung "Wort gefunden" wird ausgegeben.
- Wenn keine Übereinstimmung gefunden wird, gibt es 0 zurück, und die Meldung "Wort nicht gefunden" wird ausgegeben.
Sie können auch den Parameter $matches
verwenden, um den gefundenen Text zu erhalten:
if (preg_match($pattern, $text, $matches)) {
echo "Gefundener Text: " . $matches[0];
}
Dies würde ausgeben: "Gefundener Text: fox".
Beispiel
-
E-Mail-Validierung: Sie können einen regulären Ausdruck verwenden, um zu überprüfen, ob ein String eine gültige E-Mail-Adresse ist. Zum Beispiel:
$email = "john.doe@example.com"; $pattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/"; if (preg_match($pattern, $email)) { echo "Gültige E-Mail-Adresse"; } else { echo "Ungültige E-Mail-Adresse"; }
-
Telefonnummer-Extraktion: Sie können einen regulären Ausdruck verwenden, um Telefonnummern aus einem String zu extrahieren. Zum Beispiel:
$text = "Rufen Sie uns an unter 123-456-7890 oder 987-654-3210"; $pattern = "/\d{3}-\d{3}-\d{4}/"; if (preg_match_all($pattern, $text, $matches)) { echo "Gefundene Telefonnummern: " . implode(", ", $matches[0]); } else { echo "Keine Telefonnummern gefunden"; }
Dies würde ausgeben: "Gefundene Telefonnummern: 123-456-7890, 987-654-3210".
-
HTML-Tag-Entfernung: Sie können einen regulären Ausdruck verwenden, um HTML-Tags aus einem String zu entfernen. Zum Beispiel:
$html = "<p>Hallo <b>Welt</b>!</p>"; $pattern = "/<\/?[a-z][a-z0-9]*[^<>]*>/i"; $text = preg_replace($pattern, "", $html); echo $text;
Dies würde ausgeben: "Hallo Welt!".
Vor- und Nachteile der Verwendung regulärer Ausdrücke
Reguläre Ausdrücke haben Vor- und Nachteile bei der Überprüfung, ob ein String ein Wort enthält.
Vorteile
- Flexibilität: Regexe können komplexe Muster abgleichen, nicht nur spezifische Wörter. Sie können Zeichenklassen, Anker, Quantifizierer und mehr verwenden, um präzise Muster zu definieren.
- Leistungsfähigkeit: Mit Regexen können Sie mehr tun als nur überprüfen, ob ein String ein Wort enthält. Sie können Teile des Strings extrahieren, Text ersetzen, den String aufteilen und mehr.
Nachteile
- Komplexität: Die Regex-Syntax kann schwer zu lesen und zu schreiben sein, besonders bei komplexen Mustern. Dies kann den Code schwerer verständlich und wartbar machen.
- Leistung: Für einfache Textsuchen kann die Verwendung von Regexen langsamer sein als die Verwendung von String-Funktionen wie
strpos()
oderstr_contains()
. Regexe müssen das Muster kompilieren und dann den String durchsuchen, was Zeit in Anspruch nimmt.
Andere Methoden zur Überprüfung, ob ein PHP-String ein bestimmtes Wort enthält
Verwendung der Funktion strstr()
Die Funktion strstr()
in PHP ist eine weitere Möglichkeit, zu überprüfen, ob ein String ein bestimmtes Wort enthält. Sie sucht nach dem ersten Vorkommen eines Substrings in einem String und gibt den Rest des Strings ab diesem Punkt zurück.
Die Syntax für strstr()
ist wie folgt:
strstr(string $haystack, string $needle, bool $before_needle = false): string|false
$haystack
: Der zu durchsuchende String.$needle
: Der zu suchende Substring.$before_needle
: (Optional) Wenn auftrue
gesetzt, gibt die Funktion den Teil des Strings vor dem ersten Vorkommen des Substrings zurück. Standardmäßig ist esfalse
.
Hier ist ein Beispiel für die Verwendung von strstr()
zur Überprüfung, ob ein String ein Wort enthält:
$text = "The quick brown fox jumps over the lazy dog";
$word = "fox";
if (strstr($text, $word)) {
echo "Das Wort '$word' wurde im String gefunden.";
} else {
echo "Das Wort '$word' wurde im String nicht gefunden.";
}
In diesem Beispiel sucht strstr()
nach dem Wort "fox" im String $text
. Wenn das Wort gefunden wird, gibt die Funktion den Substring vom ersten Vorkommen von "fox" bis zum Ende des Strings zurück. Die Bedingung if (strstr($text, $word))
überprüft, ob der zurückgegebene Wert "truthy" (nicht false
) ist, was darauf hinweist, dass das Wort gefunden wurde.
Beispiel
Nehmen wir an, Sie haben eine Liste von Produktbeschreibungen und möchten überprüfen, ob ein bestimmtes Schlüsselwort in jeder Beschreibung erwähnt wird. Sie können strstr()
verwenden, um nach dem Schlüsselwort in jeder Beschreibungszeichenfolge zu suchen.
$products = [
"Apple iPhone 12 Pro Max - 128GB - Pacific Blue",
"Samsung Galaxy S21 Ultra 5G - 256GB - Phantom Black",
"Google Pixel 5 - 128GB - Just Black"
];
$keyword = "iPhone";
foreach ($products as $product) {
if (strstr($product, $keyword)) {
echo "Das Produkt '$product' enthält das Schlüsselwort '$keyword'.
";
}
}
Ausgabe:
Das Produkt 'Apple iPhone 12 Pro Max - 128GB - Pacific Blue' enthält das Schlüsselwort 'iPhone'.
Aufteilen des Strings in ein Array mit explode()
Ein anderer Ansatz zur Überprüfung, ob ein String ein bestimmtes Wort enthält, besteht darin, den String mit der Funktion explode()
in ein Array von Wörtern aufzuteilen und dann zu überprüfen, ob das Wort im Array existiert.
Die Funktion explode()
teilt einen String anhand eines angegebenen Trennzeichens in ein Array auf. Hier ist die Syntax:
explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
$separator
: Das Trennzeichen, das zum Aufteilen des Strings verwendet wird.$string
: Der aufzuteilende String.$limit
: (Optional) Die maximale Anzahl von Elementen, die im Array zurückgegeben werden sollen. Standardmäßig ist esPHP_INT_MAX
.
Hier ist ein Beispiel für die Verwendung von explode()
zur Überprüfung, ob ein String ein Wort enthält:
$text = "The quick brown fox jumps over the lazy dog";
$word = "fox";
$wordsArray = explode(" ", $text);
if (in_array($word, $wordsArray)) {
echo "Das Wort '$word' wurde im String gefunden.";
} else {
echo "Das Wort '$word' wurde im String nicht gefunden.";
}
In diesem Code teilt explode(" ", $text)
den String $text
in ein Array von Wörtern auf, wobei das Leerzeichen als Trennzeichen verwendet wird. Das resultierende Array $wordsArray
enthält jedes Wort aus dem String als separates Element.
Die Funktion in_array()
wird dann verwendet, um zu überprüfen, ob das Wort $word
im $wordsArray
existiert. Wenn das Wort gefunden wird, gibt die Funktion true
zurück, und die entsprechende Nachricht wird ausgegeben.
Beispiel
Angenommen, Sie haben eine Suchfunktion auf Ihrer Website, bei der Benutzer mehrere Schlüsselwörter eingeben können, die durch Kommas getrennt sind. Sie können explode()
verwenden, um die Eingabe des Benutzers in ein Array von Schlüsselwörtern aufzuteilen und dann nach jedem Schlüsselwort in Ihrer Datenbank oder Ihrem Inhalt zu suchen.
$userInput = "apple, samsung, google";
$keywords = explode(", ", $userInput);
// Suche nach Produkten, die eines der Schlüsselwörter enthalten
$products = [
"Apple iPhone 12 Pro Max - 128GB - Pacific Blue",
"Samsung Galaxy S21 Ultra 5G - 256GB - Phantom Black",
"Google Pixel 5 - 128GB - Just Black"
];
foreach ($products as $product) {
foreach ($keywords as $keyword) {
if (strstr($product, $keyword)) {
echo "Das Produkt '$product' stimmt mit dem Schlüsselwort '$keyword' überein.
";
}
}
}
Ausgabe:
Das Produkt 'Apple iPhone 12 Pro Max - 128GB - Pacific Blue' stimmt mit dem Schlüsselwort 'apple' überein.
Das Produkt 'Samsung Galaxy S21 Ultra 5G - 256GB - Phantom Black' stimmt mit dem Schlüsselwort 'samsung' überein.
Das Produkt 'Google Pixel 5 - 128GB - Just Black' stimmt mit dem Schlüsselwort 'google' überein.
Vergleich des Strings mit dem Wort unter Verwendung identischer Operatoren
Sie können auch überprüfen, ob ein String ein bestimmtes Wort enthält, indem Sie den String direkt mit dem Wort unter Verwendung des identischen Operators ===
vergleichen.
Hier ist ein Beispiel:
$text = "fox";
$word = "fox";
if ($text === $word) {
echo "Der String ist identisch mit dem Wort '$word'.";
} else {
echo "Der String ist nicht identisch mit dem Wort '$word'.";
}
In diesem Fall wird der String $text
direkt mit dem Wort $word
unter Verwendung des Operators ===
verglichen. Wenn der String und das Wort identisch sind, wertet die Bedingung if ($text === $word)
zu true
aus, und die entsprechende Nachricht wird ausgegeben.
Diese Methode hat jedoch Einschränkungen:
- Sie funktioniert nur, wenn der String genau mit dem Wort übereinstimmt. Wenn der String zusätzliche Zeichen enthält oder das Wort ein Substring des Strings ist, wird der Vergleich
false
zurückgeben. - Er ist case-sensitive. Wenn der String und das Wort unterschiedliche Schreibweisen haben, wird der Vergleich
false
zurückgeben.
Daher ist diese Methode nur geeignet, wenn Sie überprüfen möchten, ob ein String identisch mit einem bestimmten Wort ist, und nicht, wenn Sie überprüfen möchten, ob der String das Wort als Substring enthält.
Beispiel
Betrachten wir ein Szenario, in dem Sie eine Liste vordefinierter Kategorien haben und überprüfen möchten, ob ein gegebener String genau mit einer dieser Kategorien übereinstimmt.
$categories = ["Elektronik", "Kleidung", "Haushalt"];
$productCategory = "Elektronik";
if (in_array($productCategory, $categories, true)) {
echo "Die Produktkategorie '$productCategory' ist gültig.";
} else {
echo "Die Produktkategorie '$productCategory' ist nicht gültig.";
}
In diesem Beispiel führt die Funktion in_array()
mit dem dritten Parameter auf true
gesetzt einen strikten Vergleich (identischer Operator ===
) zwischen der $productCategory
und jedem Element des $categories
-Arrays durch. Wenn eine exakte Übereinstimmung gefunden wird, wird die Produktkategorie als gültig betrachtet.
Methode | Beschreibung | Anwendungsfall |
---|---|---|
strstr() |
Sucht nach dem ersten Vorkommen eines Substrings in einem String | Überprüfen, ob ein String ein bestimmtes Wort als Substring enthält |
explode() |
Teilt einen String anhand eines angegebenen Trennzeichens in ein Array auf | Teilt einen String in Wörter auf und überprüft, ob ein bestimmtes Wort im Array existiert |
Identischer Operator === |
Vergleicht einen String direkt mit einem Wort | Überprüfen, ob ein String genau mit einem bestimmten Wort übereinstimmt |