Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyszukiwarka - wielkie i małe znaki
Forum PHP.pl > Forum > Przedszkole
mtskilla
Witam

Mam pewien problem.
Chciałbym zrobić prostą wyszukiwarkę na stronie.
Ma ona przeszukiwać pliki php w katalogu i sprawdzać czy nie zawierają szukanej frazy.
Wszystko działa jak należy jednak jest pewien problem.
Otóż nie mogę sobie poradzić z rozróżnianiem wielkości liter.
Jeśli wpiszę wyraz z wielkiej litery to nie wyświetla mi wyników z małej - i odwrotnie.

Wiem, że powinienem najpierw zamienić "wypostowaną" zmienną np na małe litery i np cały przeszukiwany tekst na małe i wtedy porównywać.
Ale nie wiem jak do tego podejść.

Kod który użyłem jest znaleziony w necie - lekko przerobiony pod moje potrzeby.

  1.  
  2. $szukane= $_POST['szukane'];
  3.  
  4.  
  5. if(isset($szukane) && $szukane != '') {
  6. $szukane = ereg_replace("[\*\.\$/]", "", $szukane);
  7. $szukane_slowa = split("\ ", $szukane);
  8. array_unshift($szukane_slowa, $szukane);
  9. $ile_slow = count($szukane_slowa);
  10. unset($szukane);
  11.  
  12. $pliki = drzewko(".");
  13. $czytelne = czytelne($pliki);
  14. unset($pliki);
  15. sort($czytelne);
  16.  
  17. foreach($czytelne as $plik) {
  18. $id_pliku = fopen($plik, "r");
  19. $zawartosc = fread($id_pliku, filesize($plik));
  20. for($i=0; $i < $ile_slow; $i++) {
  21. if(ereg($szukane_slowa[$i], $zawartosc)) {
  22. $trafienia[] = $plik;
  23. }
  24. }
  25. fclose($id_pliku);
  26. }
  27.  
  28. if(!isset($trafienia)) {
  29. echo "Niestety nie znaleziono nic co by pasowało do twojego zapytania. Powrót";
  30. } else {
  31. $trafienia = array_unique($trafienia);
  32. sort($trafienia);
  33. foreach($trafienia as $pojedyncze) {
  34. $jazda = substr($pojedyncze, 8, -4);
  35. echo '<a href="index.php?prod='.$jazda.'" target="_self">&bull;'.$jazda.'</a>';
  36. echo '<br />';
  37. }
  38. }
  39. } else {
  40. echo "Wpisz szukane wyrażenie w wyszukiwarce.";
  41. }
  42.  
  43.  
  44. $folder = "pages/";
  45. function drzewko($folder) {
  46. global $pliki;
  47. if($folder != "/pages/") {
  48. $folder .= "/pages/";
  49. }
  50. $id_f = opendir($folder);
  51. if($id_f) {
  52. while($plik = readdir($id_f)) {
  53. if($plik == '.' || $plik == '..') {
  54. continue;
  55. }
  56. if(is_dir($folder . $plik)) {
  57. drzewko($folder . $plik);
  58. } else {
  59. $pliki[] = $folder . $plik;
  60. }
  61. }
  62. closedir($id_f);
  63. }
  64. return $pliki;
  65. }
  66.  
  67. function czytelne($spis) {
  68. $rozszerzenie[] = "php";
  69. foreach($rozszerzenie as $roz) {
  70. $dl_roz = strlen($roz);
  71. foreach($spis as $plik) {
  72. if(substr($plik, -$dl_roz) == $roz) {
  73. $wynik[] = $plik;
  74. }
  75. }
  76. }
  77. return $wynik;
  78.  
  79. }
  80.  


Będę wdzieczny za każde naprowadzenie i każdą wskazówkę.
Dodam tylko, że nie mam pojęcia w którym miejscu zastosować np strtolower..

pozdrawiam
piotrooo89
kolego po 1 nie ereg* tylko preg* się teraz stosuje, korzystasz z funkcji które są zdeprecjonowane.
jak już ładnie zamienisz to na preg* to poszukaj w google takiej frazy: preg case insensitive.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.