PHP » FAQ

Przeszukiwanie tablic jednowymiarowych za pomocą wyrażeń regularnych

adamper

Funkcja udostępniana do przeszukiwania tablic w PHP to array_search(). Umożliwia ona wyszukiwanie elementu, który jest równy elementowi w tablicy i zwraca tylko pierwszy znaleziony wynik. Co jeśli chcemy wyszukać wynik dzięki wyrażeniom regularnym i pragniemy otrzymać wszystkie wyniki?

Gotowa funkcja

Funkcja, która filtruje tablicę za pomocą wyrażeń regularnych istnieje, i nazywa się: preg_grep().

Przyznaję, nazwa faktycznie jest bardzo małomówna, co wyjaśnia czemu autor prawdopodobnie o niej nie słyszał.

Własna implementacja

Autor tego artykułu napisał też swoją wersję tej funkcji:

function array_search_preg($regex, $array) {
    foreach($array as $key => $value){
        if (preg_match($regex,$value)) { 
            $result[] = $key;
        }
    }

    if (!empty($result)) {
        return $result;
    }
    return false;
}

Przykład użycia

$array = Array('Adam','b','Lu lu','Lee','Adam','Adam' =>'Ala','Ewa' => 'Adam','Felek','Liza');

$b = array_search2("/^(Adam|Felek|Liza)$/", $array);
if (!$b) {
    echo "Brak wyników";
}
else {
    foreach($b as $k => $v) {
        echo "$a[$v]<br/>";
    }
}

Inne rozwiązania

Funkcja preg_grep() oferuje jednak wyszukiwanie tylko po wartościach tablicy, nie ma wbudowanej funkcji do wyszukiwania kluczy. Dlatego do wyrażeń regularnych warto skorzystać już z istniejącej biblioteki, np biblioteki T-Regx która oferuje funkcję preg_grep_keys().

FAQ

0 komentarzy