Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: filtr do parsera treści
Forum PHP.pl > Forum > PHP
thecgla
Witam, Pracuję nad projektem parsera treści. Chciałbym by odróżniał tekst strony z artykułem od bezwartościowych tagów lub arkuszy stylu. Coś w rodzaju robota wyszukiwarkowego. Myślę nad użyciem funkcji która by liczyła wyrazy, czyli liczba liter od 1-16 spacja. I jeśli się to powtarza co najmniej 10 razy to przechodzi. Ale nie wiem jak to ugryźć.

Próbowałem ze spójnikami ale dziwnie to wychodzi, ich ilości się kumulują ze względu na krzaczki z polskich znaków w treści.

To co napisałem działa częściowo, ale chciałbym by się wyświetlały same artykuły, a filtruje to może z 10% śmieci. Czyściłem też baze danych pod względem występowania konkretnych słów. Nie wiem jak to dalej rozwinąć. I jak używać zachodnich spójników typu "if, or, and,"





  1. $polskiespojniki =array(i, oraz, lecz, albo, czy, lub, ani, czyli, dlatego, zatem, bo, natomiast, że, gdyż, ponieważ, jeśli, jeżeli, bądź);
  2. //$zachodniespojniki=array(and, or, but, if, unless, that, until, when, while, where, after, before, because, both, either, even);
  3.  
  4.  
  5.  
  6.  
  7. //funkcja liczaca dany spojnik
  8. function Policzspojniki($polskiespojniki, $string)
  9. {
  10. $licznikspojnikow=0;
  11. $iloscprzecinkow=0;
  12. foreach ($polskiespojniki as $value) {
  13. $iloscprzecinkow=0;
  14. echo $value;
  15. echo"1";
  16. $spojnik = $value;
  17. $str = $string;
  18. $a = substr_count($str, $value);
  19. //zakomentarzowane dzialanie testowe
  20.  
  21. //echo $spojnik;
  22. //echo $a;
  23. //echo "</br>";
  24. $licznikspojnikow = $licznikspojnikow + $a;
  25. }
  26. //licznik przecinkow
  27. $iloscprzecinkow = substr_count($string, ",");
  28. echo $iloscprzecinkow;
  29. // licznik spojnikow
  30. echo 'liczenie spojnikow na stronie ';
  31. echo 'suma-';
  32. echo $licznikspojnikow;
  33. if($licznikspojnikow >3 or $iloscprzecinkow >10)
  34. return true;
  35.  
  36. else
  37. return false;
  38. $iloscprzecinkow=0;
  39. $licznikspojnikow=0;
  40.  
  41.  
  42. }
  43.  
  44. if (Policzspojniki($polskiespojniki, $string))
  45. {
  46. echo 'wiecej niż 3 spojniki lub 5 przecinkow';
  47.  
  48.  
  49.  
  50. }
  51. else {
  52. echo 'mniej niż 3 spojniki lub 5 przecinkow odrzucamy';
  53. }
  54.  
  55. ?>
kartin
Jak chcesz treść strony bez znaczników HTML to użyj np. strip_tags() i ewentualnie przed użyciem usuń skrypty oraz style np. za pomocą preg_replace()
thecgla
chodzi o to by kwalifikowałą się tylko ta która zawiera określoną treść. Nie wiem w jaki sposób napisać funkcję by sprawdzała czy znajdują się konkretne zdania w treści czyli:

wyraz(1-24litery)-spacja-wyraz(1-24litery) całość n razy zakończona kropką. A pasujące do tego schematu które mają co najmniej 3 lub 4 zdania kwalifokować do dalszego filtra który wskazałem wcześniej czyli spójniki polskie i angielskie.

Nie próbowałem testować na angielskich spójnikach ale jak pracuje na netbeans to dostaje monit o niedozwolonych słowach. Jest sens drążyć temat ze spójnikami czy lepiej dać sobie spokój i napisać coś prostszego. nie jestem zaawansowanym programistą. Opieram się na przykładach z internetu.

chodzi tez o to by zachować oryginalną treść, strip_tags zmienia strukturę tekstu.

style usuwam po adresach z bazy które zawierają xml png css itp. (zostaje 10% typu style.css?ver2003 - akceptowalne)

To coś w rodzaju nakładki na wyszukiwarkę internetową rozszerzająca możliwości wyszukiwania na stronach i linkach prowadzących ze strony prezentująca dane zbiorcze. Filtruje dokładniej wyniki generowane przez wyszukiwarkę internetową.
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.