Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Algorym na zamianę wyrazów pobranych z bazy
amii
post
Post #1





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


Sytuacja wygląda tak mam taką tablę z synonimami w bazie:
  1. CREATE TABLE `synonimy` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `wyrazy` varchar(250) NOT NULL DEFAULT '',
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3359 ;
  6.  
  7. --
  8. -- Zrzut danych tabeli `synonimy`
  9. --
  10.  
  11. INSERT INTO `synonimy` (`id`, `wyrazy`) VALUES (1, 'praktycznie=w praktyce\n'),
  12. (2, 'istnienia=egzystencji=obecno&#347ci\n'),
  13. (3, 'konkurencja=rywalizacja\n'),
  14. (4, 'filarów=podstaw=fundamentów\n')


I taką funkcję mającą zamieniać synonimy, której dostarczam parametr:
  1. $text = 'praktycznie istnienia fundamentów konkurencja gwarantuje zasadniczy. Niebyt w tym gdzieś wale korbowym ulokuj jedyna w swoim rodzaju gratki..';

  1. function losuj_synonim($text) {
  2.  
  3. /*********ŁĄCZENIE I POBRANIE SYNONIMÓW Z BAZY***********/
  4. connect_to_db();
  5. $sql = "SELECT wyrazy FROM synonimy";
  6. $zapytaj = mysql_query($sql) or die('Blad w zapytaniu o tresci : ' . mysql_error());
  7. /*********ŁĄCZENIE I POBRANIE SYNONIMÓW Z BAZY***********/
  8.  
  9.  
  10. while($row = mysql_fetch_array($zapytaj)) {
  11.  
  12. $pojedynczy = explode('=', $row['wyrazy']); //rozbijamy tabelę z synonimami
  13. $indeks = mt_rand(0, count($pojedynczy)-1); //losujemy indeks dla synonimu
  14. $a = true; //zmienna kontrolna
  15.  
  16.  
  17.  
  18. foreach ($pojedynczy as $key => $value) {
  19.  
  20. if (strpos($text, $value) && $a) { //jeśli znajdziemy którykolwiek z synonimów w tekście......
  21.  
  22. echo 'To będzie zastąpione: <font color="red"> ' .$value. '</font> tym: <font color="red">' . $pojedynczy[$indeks] . '</font> w tekście o treści: ' . $text . '<br><br>';
  23.  
  24. $text = str_replace($value, $pojedynczy[$indeks], $text); //nadpisujemy tekst z podmienionym synonimem
  25.  
  26. if($value == $pojedynczy[$indeks]) continue;
  27. else $a=false; //w innym przypadku ustawiamy zmienna kontrolna a na false żeby przerwać pętle oznaczyć udana zamianę i nie zamieniać cały czas tego samego wyrazu na rożne synonimy
  28.  
  29. }
  30.  
  31. else break; //jesli a==FALSE lub nie znaleźliśmy synonimu w tekście to wychodzimy z pętli foreach i w pętli while szukamy kolejnego wyrazu
  32.  
  33. }
  34.  
  35. }
  36.  
  37. return $text; //zwracamy podmieniony tekst i przekazujemy zmienna do innej funkcji np. dodającej podmienione artykuły do blogów
  38. }


Funkcja podmienia tylko:
istnienia -> egzystencji
konkurencja ->rywalizacja
istnienia->istnienia
konkurencja->konkurencja

Co zrobić aby to działało na zasadzie, że dla któregokolwiek z tych przykładowych wyrazów w bazie, który zostanie odnaleziony w zmiennej $text czyli:
filarów=podstaw=fundamentów
zostania dokonana podmiana na synonim
filarów=podstaw=fundamentów
tak jednak żeby nie została dokonana zamiana tego samego wyrazu na to samo ?


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:01