Aktueller Standort: Startseite> Neueste Artikel> Array_filter () wird verwendet, um eine komplexe Matching -Filterung mit regulären Ausdrücken zu implementieren

Array_filter () wird verwendet, um eine komplexe Matching -Filterung mit regulären Ausdrücken zu implementieren

M66 2025-06-04

In der PHP -Entwicklung müssen wir häufig Elemente herausfiltern, die bestimmte Bedingungen aus einem Array erfüllen. Array_Filter () ist ein leistungsstarkes Werkzeug, um diese Anforderung zu bewältigen, und regelmäßige Ausdrücke können nützlich sein, wenn Sie komplexere Übereinstimmungen durchführen möchten (z. B. Mustererkennung, Keyword -Filterung usw.).

In diesem Artikel wird vorgestellt, wie Sie Array_filter () mit regelmäßigen Ausdrücken verwenden, um eine flexiblere Array -Matching und Filterung zu erreichen.

1. Einführung in Array_filter ()

Array_Filter () ist eine integrierte Funktion, die von PHP bereitgestellt wird und mit dem Elemente in einem Array basierend auf dem Rückgabewert der Rückruffunktion gefiltert werden. Die grundlegende Syntax ist wie folgt:

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array
  • $ Array : Das ursprüngliche Array zum Filter.

  • $ CALLBACK : Die Rückruffunktion, mit der jeden Wert des Arrays getestet werden, kehrt die Reservierung an und kehrt Falsch zurück, um sie zu entfernen.

  • $ modus : optional, um anzugeben, ob ein Schlüsselwert, einen Schlüsselnamen oder beides übergeben werden soll.

Wenn $ Callback nicht übergeben wird, entfernt Array_Filter () die Werte, die im Array zu falsch sind (z. B. 0 , falsch , '' , Null usw.).

2. Typische Nutzungsszenarien, die regelmäßige Ausdrücke kombinieren

Das Folgende sind einige typische Szenarien. Wir werden Array_Filter () mit preg_match () (reguläre Übereinstimmungsfunktion) verwenden, um den Filtervorgang abzuschließen.

1. Filterketten mit spezifischen Schlüsselwörtern enthalten

Angenommen, wir haben eine URL -Liste und möchten den Link finden, der das Anmeldungsfeld enthält:

 $urls = [
    'https://m66.net/login',
    'https://m66.net/register',
    'https://m66.net/user/profile',
    'https://m66.net/logout',
    'https://m66.net/help/login-guide'
];

$filtered = array_filter($urls, function($url) {
    return preg_match('/login/i', $url);
});

print_r($filtered);

Ausgangsergebnis:

 Array
(
    [0] => https://m66.net/login
    [4] => https://m66.net/help/login-guide
)

Beschreibung: /Login /Ich meint, eine von Fall unempfindliche "Login" zu entsprechen.

2. Filtern Sie die Zeichenfolgen im Mailbox -Format heraus

 $data = [
    'john@example.com',
    'https://m66.net/contact',
    'not-an-email',
    'user@domain.net',
    'hello@m66.net'
];

$emails = array_filter($data, function($item) {
    return preg_match('/^[\w\.-]+@[\w\.-]+\.\w{2,}$/', $item);
});

print_r($emails);

Ausgangsergebnis:

 Array
(
    [0] => john@example.com
    [3] => user@domain.net
    [4] => hello@m66.net
)

3.. Passen Sie die Saiten ab, beginnend mit Zahlen

 $items = ['123start', 'alpha', '42beta', 'm66.net', '99bottles'];

$startsWithDigit = array_filter($items, function($str) {
    return preg_match('/^\d/', $str);
});

print_r($startsWithDigit);

Ausgangsergebnis:

 Array
(
    [0] => 123start
    [2] => 42beta
    [4] => 99bottles
)

3. Fortgeschrittene Fähigkeiten: Multi-Konditions-Matching

Sie können auch komplexere passende Logik durch Kombinationen regelmäßiger Ausdrücke erstellen. Stimmen Sie beispielsweise URLs an, die sowohl "Login" enthalten als auch mit .NET enden:

 $urls = [
    'https://m66.net/login',
    'https://m66.net/login-help.net',
    'https://m66.net/home',
    'https://m66.net/logout',
    'https://m66.net/login/info'
];

$matched = array_filter($urls, function($url) {
    return preg_match('/login.*\.net$/i', $url);
});

print_r($matched);

4.. Dinge zu beachten

  1. Regelmäßige Expressionseffizienzproblem : Komplexe reguläre Ausdrücke können die Leistung bei der Verarbeitung großer Arrays beeinflussen. Es wird empfohlen, Intermediate -Ergebnisse vorzunehmen oder Ausdrücke zu optimieren.

  2. Unicode -Zeichenanpassung : U -Modifikator muss aktiviert werden, wie z. B. /muster /u .

  3. Verarbeitung mehrdimensionaler Arrays : Für mehrdimensionale Arrays verarbeitet Array_Filter () nur standardmäßig eindimensional. Wenn eine tiefere Filterung erforderlich ist, können Sie rekursive Funktionen verwenden, um sie zu verarbeiten.

5. Zusammenfassung

Durch Kombinieren von Array_filter () mit PREG_MATCH () können PHP -Entwickler die komplexe Array -Filterlogik problemlos implementieren. Diese Methode ist nicht nur in der Syntax, sondern hat auch eine hohe Ausführungseffizienz. Es eignet sich für verschiedene Szenarien wie Datenreinigung, Eingabeüberprüfung und URL -Filterung.

Das Beherrschen dieser Fähigkeiten verbessert Ihre Datenverarbeitungsfunktionen in tatsächlichen Projekten erheblich!