Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rozbicie funkcji na elemnety i ponowne jej zlożenie
Forum PHP.pl > Forum > Przedszkole
Derw
Witam,

Mam taki oto problem:

mam funkcje np. sin(x)+2*x (to wpisuje się w pole tekstowe). Jest to string $funkcja. I teraz chciałbym ten string podzielić na tablicę w postaci:

$i[0]='sin'
$i[1]='('
$i[2]='x'
$i[3]=')'
$i[4]='+'
itd...

myślałem o split() ale ona nie zapisuję do tablicy elementów po których ma dzielić tekst. I zamiast tego co napisałem wyżej dostaję:

$i[0]=sin;
$i[1]=x;
$i[2]=2
itd...


Czy jest jakiś sposób by tak rozdzielić tego stringa? Dodam że to jest przykładowa funkcja, która za każdy razem może być inna.

Z góry dziękuje za odpowiedź.
skowron-line
  1. <?php
  2. $string = 'abcdef';
  3. echo $string[0]; //a
  4. ?>


napisz funkcje ktora rozpozna sobie nazwy funkcji mamematycznych, zeby ich nie obcinal.
Derw
A czy istnieje jakaś funkcja która zamieni mi tekst na działanie matematyczne?

np. tekst w pierwszym poście czyli sin(x)+2*x.
W javascript była funkcja eval która potrafiła obliczyć takie wyrażenie a dokładniej jak podało się np
eval(Math.sin(2)+2*2) to zwracało wynik. W php też jest funkcja eval ale ona chyba tak nie działa.
Kalinowcyk
W php możesz takie wyrażenie obliczyć tak:

  1. <?php
  2. sin(deg2rad(2))+2*2
  3. ?>


Pozostaje problem parsowania stringa do wyrażenia.
Derw
No tak ale to wyrażenie ma być zmienne,

Problem wygląda tak, mam formularz a dokładnie input text w którym wpisuje np: 2+2*3/4 (albo coś innego) i teraz dostaje to w postaci stringa, a chce to zamienić na działanie matematyczne, żeby zwróciło mi wynik i nie ważne czy to ma być sin(2)*2 czy 2+4*100/sin(x).
dr_bonzo
W php tez masz eval i tez ci zadziala.

  1. <?php
  2. eval( '$x = sin( M_PI / 6 );' );
  3. echo $x;
  4. ?>
Derw
Cytat(dr_bonzo @ 25.03.2009, 11:17:08 ) *
W php tez masz eval i tez ci zadziala.

  1. <?php
  2. eval( '$x = sin( M_PI / 6 );' );
  3. echo $x;
  4. ?>


No ale co mi z tej stałej funkcji matematycznej?
No to może inaczej.. dostaję zmienną string $funkcja w której może być DOWOLNE działanie matematyczne , a jak zrobię eval($funkcja) to przecież to nie zadziała. Nie zwróci mi wyniku.
To że wpiszę na sztywno jakieś działanie nic mi nie daję.
Problem polega na tym by ze zmiennej string np. 'sin(2)+2+3' dostać $wynik=Math.sin(2)+2+3; I żeby wynikiem był wynik tego działania. Ale zmienna jest wprowadzana w formularzu i może być DOWOLNA. Nie jest z góry ustalona w kodzie php.
dr_bonzo
Dzizez, pomyslales troche?

  1. <?php
  2. eval( '$wynik = ' . $_POST['dzialanie'] . ';' );
  3. echo $wynik;
  4. ?>


wystarczy podmienic moja PRZYKLADOWE dzialanie "sin( M_PI / 6 )" na zmienna z POSTa
Derw
Cytat(dr_bonzo @ 25.03.2009, 12:44:24 ) *
Dzizez, pomyslales troche?

  1. <?php
  2. eval( '$wynik = ' . $_POST['dzialanie'] . ';' );
  3. echo $wynik;
  4. ?>


wystarczy podmienic moja PRZYKLADOWE dzialanie "sin( M_PI / 6 )" na zmienna z POSTa


No cóż wyszło że jeszcze ciemna masa ze mnie...
Tak jak mówiłeś działa.

Można zamknąć.

Dziękuje wszystkim za pomoc.
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.