Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]potrzebuję rozpoznawanie tekstu
Forum PHP.pl > Forum > Przedszkole
kreteda
Potrzebuję zrobić skrypt na rozpoznawanie tekstu wcześniej wpisanego w formularzu.

np.
54x pomidor

to będzie wykrywać 54 * $pomidor ( pod zmienną bd podstawiona jakaś wartość)



dowiedzialem się, że bd mi potrzebny parser, lecz nie wiem jak go zrobić, znam podstawy php, proszę ocenić czy to na moje możliwości jeśli uznasz, że tak to o jakąś porade
Pawel_W
ja zrobiłbym to tak: wyciągam z tekstu dane 54 i pomidor a następnie podstawiam itd..

wersja 1:
użycie funkcji explode, jako argument podajemy "x "
wersja 2, bardziej skomplikowana:
korzystam z wyrażeń regularnych i funkcji preg_match, ew. preg_match_all

następnie składam wszystko i gotowe smile.gif
piotrooo89
Cytat(kreteda @ 19.04.2010, 19:38:57 )
znam podstawy php, proszę ocenić czy to na moje możliwości jeśli uznasz, że tak to o jakąś porade


aniby skąd mamy wiedzieć jakie podstawy znasz? może tylko umiesz łączyć stringi?

co do tematu, to powiedz w jakiej formie będą dane i co chcesz z nimi później robić?
kreteda
dzięki, wiedziałem, że ktoś mi tu pomoże : P

bd próbował z explode narazie, bo w miare wiem o co w tym chodzi.
wookieb
Dam Ci słowo klucz do takich rzeczy - Tokenizer (nie chodzi tutaj o tokeny obrazkowe)
kreteda
  1. <?php
  2.  
  3.  
  4. $a="10x kawa";
  5.  
  6.  
  7.  
  8.  
  9. $ile= substr($a, 0, 2);
  10. $kawa=substr($a, 4, 8);
  11. if($kawa=="kawa"){
  12. $kawa=10;
  13. }
  14.  
  15.  
  16.  
  17.  
  18. $b=$ile*$kawa;
  19. echo $b;
  20. echo "<br>" ;
  21. echo $ile;
  22. echo "<br>";
  23. echo $kawa;
  24. ?>



zrobiłem coś takiego : ) jest juz cos.

czy da sie to jakoś przerobić aby wykrywało następne linie ?

np.
10x kawa
10x ananas
20x truskawka

i pobiera wszysto do tablic?

wiem, że moge zrobić to żeby x usuwało a nie tak na stałe, ale zrobiłem to tak aby sprawdzić czy dziala.
Pawel_W
  1. $kawa = 10;
  2. $herbata = 15;
  3. $woda = 20;
  4.  
  5. $text = "10x kawa
  6. 11x herbata
  7. 500x woda";
  8. $arr = explode("\r\n", $text);
  9. foreach($arr as $line)
  10. {
  11. $elements = explode("x ", $line);
  12. $zm = $$elements[1];
  13. echo $elements[0] . "x " . $elements[1] . " = " . $zm * $elements[0] . "<br />";
  14. }
kreteda
Wieeelkie dzięki, bez Twojej pomocy by się nie udało, wszystko działa jak ta lala ; ) można zamknąć
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.