Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Podmana wartosci w tablicy
Forum PHP.pl > Forum > Przedszkole
shtoc
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.  
  3. <html>
  4. <head>    
  5. </head>
  6. <body>
  7.  
  8.    <form method="post">
  9.    <textarea name="mix" cols="70" rows="20"></textarea>
  10.    <br />
  11.    <input type="submit" value="MIX"/>
  12.    </form>
  13.    <?php
  14.  
  15.    $pdo = new PDO('mysql:host=localhost;dbname=mikser', 'admin', 'xx');
  16.    $pdo ->query("SET NAMES latin2");
  17.  
  18.    $tablica = explode(" ", $_POST['mix']);
  19.  
  20.    foreach($tablica as $tmp)
  21.    {
  22.       $dlugosc=strlen ($tmp);
  23.       if ($dlugosc >= 4)
  24.       {
  25.          
  26.           $sql="  SELECT * FROM synonimy WHERE slowa REGEXP '$tmp'";
  27.           $stat = $pdo->query($sql);
  28.    
  29.            foreach($stat as $row)
  30.             {                            
  31.                $synonim=$row['slowa'];              
  32.                $nowa=str_replace(';', '|',$synonim);
  33.                                                            
  34.             }
  35.               echo '<br />'."[$tmp]".$nowa.'<br />';      // w zmiennej nowa sa synonimy pobrane z bazy dla slowa ze zmiennej tmp
  36.            
  37.       }
  38.    else ;
  39.  
  40.    unset ($nowa,$synonim);
  41.    }
  42.  
  43. ?>
  44.  
  45. </body>
  46. </html>


mam taki problem jak mam w tablicy z rozbitym tekstem podmienic dany wyraz dla ktorego sa sprawdzane synonimy tymi synonimami i zwrocic tekst z tymi synonimami??

przyklad :

to jest jakis napisany tekst

to jest jakis synonim|synonim1|synonm2 tekst
ziqzaq
Jeśli dobrze zrozumiałem to zainteresuje cię str_replace, lub bardziej skomplikowany, ale mający większe możliwości preg_replace.
Przykłady użycia są w manualu - poprostu iterujesz po wszystkich wyrazach które chcesz zmienić.

Edit:
Oł... widzę że używasz str_replace, chyba źle cię zrozumiałem winksmiley.jpg
shtoc
no chyba smile.gif

to jeszcze raz...

chodzi mi o to ze wrzucam sobie jakis tekst
rozbijam go na tablice słow po spacji
biore pierwsze slowo i sprawdzam czy spelnia warunek (czy jest wiecej niz 4 litery)
poczym robie zapytanie do bazy czy takie slowo jest w bazie (baa zawiera synonimy słow w formacie synonim;synonim1;synonim2 itd)
i jezeli to slowo jest w ktoryms z rekordow to pobieram te synonimy do zmiennej nowa

i tu zaczynaja sie schody gdyz chcialbym zastapic ta zmienna z pobranymi synonimami wyraz ktory był sprawdzany (czyli wlasnie nie wiem jak) i potem zeby wyswietlic ten tekst z pozmenianym slowami na ciagi synonimow
ziqzaq
Tak patrzę na twój kod i się zastanawiam w czym ty masz problem.
Przecież masz tekst ($_POST['mix']), masz słowa ($tmp), synonimy ($stat), więc w czym problem?
Bierzesz synonimy, słowa i tekst i zamienasz słowa na synonimy (funkcje znasz).

Edit:
Coś w stylu:
  1. <?php
  2. $tekst = $_POST['mix'];
  3. ....
  4. foreach($tablica as $tmp)
  5.   {
  6.      $dlugosc=strlen ($tmp);
  7.      if ($dlugosc >= 4)
  8.      {
  9.          
  10.          $sql="  SELECT * FROM synonimy WHERE slowa REGEXP '$tmp'";
  11.          $stat = $pdo->query($sql);
  12.    
  13.           foreach($stat as $row)
  14.            {                            
  15.               $synonim=$row['slowa'];              
  16.               $nowa=str_replace(';', '|',$synonim);
  17.                                                          
  18.            }
  19.              echo '<br />'."[$tmp]".$nowa.'<br />';      // w zmiennej nowa sa synonimy pobrane z bazy dla slowa ze zmiennej tmp
  20.  
  21.  
  22.           // Tu masz swoj tekst
  23.           $tekst = str_replace($tmp,$nowa,$tekst);
  24.      }
  25. ...
  26. ?>


Edit2:
Chyba skumałem w czym tkwi twój problem.
Wiesz, że jak wyciągniesz kilka synonimów z bazy to zmienna $nowa będzie przechowyać tylko ostatni synonim?
Zastanów się dlaczego (przypatrz się co robisz ze zmienną $nowa) winksmiley.jpg
  1. <?php
  2. $sql="  SELECT * FROM synonimy WHERE slowa REGEXP '$tmp'";
  3.         $stat = $pdo->query($sql);
  4.  
  5.          foreach($stat as $row)
  6.           {                            
  7.              $synonim=$row['slowa'];              
  8.              $nowa=str_replace(';', '|',$synonim);
  9.                                                          
  10.           }
  11. ?>

A jak to nie to to odpadam winksmiley.jpg
Mam dzisiaj jakiś niż umysłowy.
shtoc
faktycznie dzieki!!
tylko jeszcze musze wyeliminowac slowa dla ktorych nie znaleziono synonimow w bazie bo teraz te slowa sa czyszczone z teksu

(no wlasnie ja chcialem w momecie gdy zmienna $nowa ma te synonimy to zeby je podmieniala to z elementem tablicy ktory jest w zmiennej tmp bledy poczatkujacych ;p)
ziqzaq
Rób str_replace tylko dla słów z synonimami
Np.:
  1. <?php
  2. $nowa = '';
  3.  
  4. // Tutaj pobierz synonimy (jak ich nie bedzie to $nowa zostanie pustym ciagiem znakow)
  5.  
  6. if (!empty($nowa)) {
  7.    $tekst = str_replace($tmp,$nowa,$tekst);
  8. }
  9. ?>


Edit:
PS. I życzę udanego kodowania winksmiley.jpg
shtoc
polowa skucesu juz jest teraz trzeba jeszcze zmieniac synonimy smile.gif zeby powstal normalny tekst z tekstu :

{użytek|wykorzystanie|zastosowanie } cyfrowych mierników {wzrastać|zwiększać się } {niedokładność|nieścisłość } {dokonywać pomiaru|mierzyć|oceniać|określać wielkość|szacować|wymierzać|wyznaczać } {obezwładnić|olśnić|oszołomić|oślepić|porazić|przyćmić|przytłoczyć|rozłożyć na łopatki|sparaliżować|zamroczyć } eliminuje {uruchamiać|usuwać błędy } odczytu.
ziqzaq
Mogę ci polecić coś takiego:
  1. <?php
  2. // Nasz tekst
  3. $tekst = $_POST['mix'];
  4. $tablica = explode(" ", $_POST['mix']);
  5. ...
  6. foreach($tablica as $tmp) {
  7.    $dlugosc=strlen ($tmp);
  8.    if ($dlugosc >= 4) {
  9.        $sql="  SELECT * FROM synonimy WHERE slowa REGEXP '$tmp'";
  10.        $stat = $pdo->query($sql);
  11.        
  12.        $nowa = ''; // Dobrze jest zawsze najpierw zainicjowac zmienna
  13.        foreach($stat as $row) {                            
  14.            $synonim=$row['slowa'];              
  15.            $nowa=str_replace(';', '|',$synonim);
  16.        }
  17.        
  18.        // Mamy synonimy?
  19.        if (!empty($nowa)) {
  20.            // Zrob tablice synonimow
  21.            $syn = explode('|',$nowa);
  22.            // Uzyj funkcji array_rand, zwroci ci losowy index synonimu z tablicy $syn
  23.            $syn_index = array_rand($syn, 1);
  24.            
  25.            // Tutaj sam wymysl co zrobic aby ci to ladnie zadzialalo
  26.            //$tekst = str_replace($tmp,$nowa,$tekst);
  27.        }
  28.    }
  29. ...
  30. ?>
shtoc
dziekuje zaraz przeanalizuje

super smile.gif

dorzucialem
  1. <?php
  2. if (!empty($nowa))
  3.           {
  4.           $syn=array();
  5.           $syn = explode('|',$nowa);              
  6.           $syn_index = array_rand($syn, 1);                  
  7.           $tekst = str_replace($tmp,$syn[$syn_index],$tekst);        
  8.          
  9.           }
  10. ?>


i super wyswietla smile.gif
jeszcze raz dzieki!!
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.