Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erreicht man SQL-ähnliche \'%search%\'-Funktionalität in PHP-Arrays?

Wie erreicht man SQL-ähnliche \'%search%\'-Funktionalität in PHP-Arrays?

DDD
DDDOriginal
2024-11-04 11:02:02505Durchsuche

How to Achieve SQL LIKE '%search%' Functionality in PHP Arrays?

Ähnliche SQL-Filterung in PHP: Übereinstimmungen mit Teiltext zurückgeben

Filtern von Werten aus einem Array basierend auf einer Teiltextsuche, ähnlich wie bei SQL WIE die Abfrage „%search%“ kann in vielen Programmierszenarien eine wesentliche Aufgabe sein. Um dies in PHP mithilfe von Arrays zu erreichen, sind spezielle Techniken erforderlich.

Betrachten wir das bereitgestellte Beispiel. Bei einem Array mit Farbnamen besteht das Ziel darin, nur die Farben zurückzugeben, die teilweise mit dem Eingabetext des Benutzers übereinstimmen. Bei einer Eingabe von „bl“ wäre die erwartete Ausgabe beispielsweise [„blau“, „schwarz“] aus dem Eingabearray [„orange“, „blau“, „grün“, „rot“, „rosa“, "braun", "schwarz"].

Reguläre Ausdrücke mit preg_grep verwenden

Anstatt array_filter mit einer benutzerdefinierten Lambda-Funktion zu verwenden, besteht ein einfacherer und effizienterer Ansatz darin Verwenden Sie die Funktion preg_grep. Es kombiniert die Leistungsfähigkeit regulärer Ausdrücke mit Array-Filterung:

<code class="php">$input = preg_quote('bl', '~'); // Quote the input string for use in regex
$data = array('orange', 'blue', 'green', 'red', 'pink', 'brown', 'black');

$result = preg_grep('~' . $input . '~', $data);</code>

In diesem Code:

  • preg_quote schützt die Eingabezeichenfolge, indem es Sonderzeichen wie ., ? und * maskiert.
  • preg_grep verwendet das PHP-Trennzeichen ~ für Regex und das Muster ~' . $input . '~ entspricht jeder Zeichenfolge, die die Eingabeteilzeichenfolge bl enthält.
  • Das resultierende $result-Array enthält nur Elemente, die teilweise mit der Eingabe übereinstimmen, d. h. blau und schwarz.

Das obige ist der detaillierte Inhalt vonWie erreicht man SQL-ähnliche \'%search%\'-Funktionalität in PHP-Arrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn