OK zadanie dla ambitnych smile.gif Chce napisać funkcję losującą dynamicznie synonimy na podstawie przekazanego jako argument parametru funkcja na podstawie danych z bazy ma zamieniać wyrazy na odpowiadające im synonimy.

Struktura danych:
slowo
id (int) wyraz (int)
1 1
2 1
3 1
4 3
5 3
synonimy
id (int) wyrazy (varchar100)
1 szybki
2 błyskawiczny
3 pędzący
4 gruby
5 ociężały

  1. //funkcja losujaca synonimy
  2. function losuj_synonim($text) {
  3. connect_to_db(); //laczymy sie baza
  4.  
  5. $pobierz = "SELECT id FROM synonimy as liczba";
  6. $zap = mysql_query($pobierz) or die('Blad w zapytaniu SELECT id FROM synonimy as liczba: '. mysql_error());
  7. $liczba_rekordow = mysql_num_rows($zap); //pobieramy liczbe rekordow
  8. $zmienna=1;
  9.  
  10. while($zmienna < $liczba_rekordow) {
  11. $sql = "SELECT a.id AS identyfikator, a.wyrazy, b.id AS iden, b.wyraz FROM synonimy a LEFT JOIN slowo b ON b.id=a.id WHERE b.wyraz='$zmienna'"; //pobieramy liste wyrazow skojarzonych synonimami to te dla ktorych wyraz z tabeli slowo jest taki sam
  12. $zapytaj = mysql_query($sql) or die('Blad w zapytaniu o tresci skomplikowane : ' . mysql_error());
  13.  
  14. $b=0;
  15. if(isset($tabliczka)) unset($tabliczka); //usuwamy tablice
  16. $tabliczka = array();
  17. while($row = mysql_fetch_array($zapytaj)) {
  18. $tabliczka[$b] = $row['wyrazy']; //wpisz wyrazy(synonimy) do tablicy
  19. $b++;
  20.  
  21. $ostatni = $row['iden']; //ostatni identyfikator ze slowo zapisujemy
  22. }
  23.  
  24.  
  25.  
  26. $a=true; //zmienna kontrolna
  27. $indeks = mt_rand(0, count($tabliczka)-1); //losujemy indeks dla synonimu
  28. for($g=0; $g<count($tabliczka); $g++) { //petla po synonimach
  29. while($indeks==$g) $indeks = mt_rand(0, count($tabliczka)-1); //losujemy indeks dla synonimu tak zeby nie pokrywal sie z zamienianym wyrazem nie chce zamieniac frazy 'gruby' na 'gruby'
  30. if(strpos($text, $tabliczka[$g]) && $a && substr($text, strpos($text, $tabliczka[$g]), strlen($tabliczka[$indeks])) != $tabliczka[$indeks]) { //sprawdzamy czy fraza jest w bazie
  31. $text = str_replace($tabliczka[$g], $tabliczka[$indeks], $text); //i podmieniamy
  32. $a=false; //jedna zamiana wystarczy nie zpetlamy sie dla tego samego wyrazy
  33. }
  34. else {}
  35. }
  36. $zmienna = $ostatni;
  37. }
  38. return $text; //zwracamy podmieniony tekst i przekazujemy zmienna do innej funkcji np. dodajacej podmienione artykuly do blogow
  39. }



Co funkcja wypluwa. Dla
$text = '<strong>efekt finansowego</strong> takie tam se nie synonimy...... blblblbla buty do uprawiania sportu kontrolowany apartamenty</p><p>&nbsp;</p><p>Ł&oacute;dź to nasze miasto drogi Pawle let's check this link out -&gt; <strong><a href="http://www.link.pl">link</a></strong></p><p>&nbsp;</p>';

1 wersja
skutek bankowego takie tam se nie synonimy…… blblblbla obuwie do uprawiania sportu sprawdzany ekskluzywne dome

Łódź to nasze miasto drogi Wieśku let's check this wskaźnik adresu www out -> link



2 wersja
rezultat instytucja finansowaowego takie tam se nie synonimy…… blblblbla buty sportowe testujeny ekskluzywne domy

Łódź to nasze miasto drogi Karolku let's check this link out -> link


3 wersja
efekt gospodarczego takie tam se nie synonimy…… blblblbla obuwie sportowe kontrolujeny ekskluzywne lokal mieszkalnyy

Łódź to nasze miasto drogi Stasiekku let's check this wskaźnik adresu www out -> link