Odkrywanie (String Search) algorytmu wyszukiwania ciągów znaków w PHP

Algorytm przeszukiwania ciągów jest podstawową metodą programowania używaną do lokalizowania pozycji podłańcucha w większym łańcuchu. Algorytm ten jest powszechnie stosowany do wyszukiwania określonych słów kluczowych, sekwencji znaków lub wzorców w tekście lub danych. W PHP dostępne są różne metody, takie jak strpos() i, strstr() do wyszukiwania ciągów.

Jak działa algorytm wyszukiwania ciągów znaków

Algorytm wyszukiwania ciągów znaków działa w następujący sposób:

  1. Tekst do wyszukania: Po pierwsze, potrzebujemy większego ciągu(tekst, dane), w którym chcemy szukać.
  2. Wzorzec do wyszukania: Potrzebujemy podłańcucha(słowa kluczowego, wzorca), który chcemy zlokalizować w tekście.
  3. Dopasowywanie łańcucha: Algorytm porównuje każdy znak wzorca z odpowiednimi znakami w tekście. Jeśli odpowiednie znaki nie pasują do siebie, algorytm kontynuuje sprawdzanie kolejnych pozycji.
  4. Zwracana pozycja: jeśli podłańcuch zostanie znaleziony w większym łańcuchu, algorytm zwraca pozycję jego pierwszego wystąpienia. Jeśli nie zostanie znaleziony, algorytm zwraca nieistniejącą wartość(np. -1).

Zalety i wady algorytmu wyszukiwania ciągów znaków

Zalety:

  • Prosty i zrozumiały: ten algorytm jest prosty do wdrożenia i użycia.
  • Dobra wydajność w przypadku krótkich ciągów: Działa dobrze podczas wyszukiwania w krótkich ciągach.

Niedogodności:

  • Niska wydajność długich ciągów znaków: Wydajność może znacznie spaść podczas wyszukiwania długich ciągów znaków.
  • Znajduje tylko pierwsze wystąpienie: Algorytm zwraca tylko pozycję pierwszego wystąpienia podłańcucha.

Przykład i wyjaśnienie

Załóżmy, że mamy tekst opisu produktu i chcemy sprawdzić, czy słowo kluczowe screen „pojawia się w tekście. Poniżej znajduje się przykład, jak wykonać wyszukiwanie ciągów znaków w PHP:

$text = "This product features a wide and high-quality screen.";  
$keyword = "screen";  
  
$position = strpos($text, $keyword);  
  
if($position !== false) {  
    echo "The keyword \"$keyword\" was found at position $position in the text.";  
} else {  
    echo "The keyword \"$keyword\" was not found in the text.";  
}  

W tym przykładzie używamy strpos() funkcji do wyszukania pozycji pierwszego wystąpienia słowa kluczowego screen  w tekście. Jeśli słowo kluczowe zostanie znalezione, drukowana jest jego pierwsza pozycja; jeśli nie, zostanie wyświetlony komunikat informujący, że słowo kluczowe nie zostało znalezione.

Algorytm wyszukiwania ciągów, choć prosty i skuteczny w przypadku wyszukiwania podstawowego, może działać słabo w przypadku długich tekstów i nie zapewnia możliwości znalezienia wszystkich wystąpień podłańcucha.