Stygų paieškos (String Search) algoritmo tyrinėjimas PHP

Styginių paieškos algoritmas yra esminis programavimo metodas, naudojamas poeilutės vietai nustatyti didesnėje eilutėje. Šis algoritmas dažniausiai naudojamas ieškant konkrečių raktinių žodžių, simbolių sekų ar šablonų tekste ar duomenyse. PHP galimi įvairūs metodai, pvz., strpos() ir strstr() eilučių paieškai atlikti.

Kaip veikia eilučių paieškos algoritmas

Eilučių paieškos algoritmas veikia taip:

  1. Ieškomas tekstas: Pirma, mums reikia didesnės eilutės(teksto, duomenų), kurioje norime ieškoti.
  2. Šablonas, kurio reikia ieškoti: mums reikia poeilutės(raktinio žodžio, šablono), kurią norime rasti tekste.
  3. Eilutės atitikimas: algoritmas lygina kiekvieną rašto simbolį su atitinkamais teksto simboliais. Jei atitinkami simboliai nesutampa, algoritmas ir toliau tikrina kitas pozicijas.
  4. Grąžinimo vieta: jei poeilutė randama didesnėje eilutėje, algoritmas grąžina jos pirmojo pasireiškimo vietą. Jei nerasta, algoritmas grąžina neegzistuojančią reikšmę(pvz., -1).

Styginių paieškos algoritmo privalumai ir trūkumai

Privalumai:

  • Paprasta ir suprantama: šį algoritmą lengva įdiegti ir naudoti.
  • Geras trumpųjų stygų našumas: gerai veikia ieškant trumpose eilutėse.

Trūkumai:

  • Prastas ilgų stygų našumas: ieškant ilgose eilutėse našumas gali labai sumažėti.
  • Suranda tik pirmąjį įvykį: algoritmas grąžina tik pirmojo poeilutės pasireiškimo vietą.

Pavyzdys ir paaiškinimas

Tarkime, kad turime produkto aprašymo tekstą ir norime patikrinti, ar screen tekste yra raktinis žodis ". Toliau pateikiamas pavyzdys, kaip atlikti eilučių paiešką 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.";  
}  

Šiame pavyzdyje strpos() funkciją naudojame ieškoti pirmojo raktinio žodžio vietos screen  tekste. Jei raktinis žodis randamas, spausdinama pirmoji jo padėtis; jei ne, rodomas pranešimas, kad raktinis žodis nerastas.

Nors paprastas ir veiksmingas pagrindinėms paieškos atvejams, eilučių paieškos algoritmas gali prastai veikti su ilgais tekstais ir nesuteikia galimybės rasti visų poeilutės atvejų.