Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przeszukiwanie wprowadzonego wyrażenia
Forum PHP.pl > Forum > Przedszkole
AdamT
Witam!

Mam takie pytanie, jak przeszukać wprowadzone wyrażenie pod kontem wyszukania pojedynczych znaków ?

Konkrtenie znalazłem coś takiego

  1. <center>
  2. <form action="<? echo $PHP_SELF; ?>" method="post">
  3. Prosze wprowadziŠ wyra┐enie do analizy :<br><input type=text name=zdanie><br>
  4. <input type=submit name=submit value=wyslij>
  5. </form> 
  6.  
  7. <?php
  8. echo ("Wpisa│es :");
  9. echo ($zdanie);
  10. if (strstr($zdanie, "v")!==False)
  11. {
  12. echo ("<br><br>Zdanie <b><font color="green">zawiera</b></font> operatory logiczne, idz do kroku 2 ");
  13. }
  14. else
  15. {
  16. echo ("n<br><br>Zdanie <b><font color="red">nie zawiera</b></font> operatorow logicznych ");
  17. }
  18. ?>
  19. </center>


Kiedy wpiszemy wyrażenie ze znakiem v to działa ale jak dodac do tego jeszcze "&" ">" i "=" ?

jak wpiszemy "v&>=" to bedzie dzialac ale tylko jezeli pojawi sie ciag dokladnie taki v&>= a ja potrzebuje napisac zeby warunek byl spelniony jak przynajmniej jedno z nich jest w wyrazeniu

Pomozcie
Dzieki
gladiror
Spróbuj może tak:

  1. <?php
  2.  
  3. if (strstr($zdanie, "v" or ">" or "=")!==False)
  4.  
  5. ?>
AdamT
Nie działą juz próbowałem... pozatym z tą funkcją
  1. <?php
  2. ?>
nie da rady chyba przeszukać pojedynczych znaków tylko ciągi sad.gif

tak mi się wydaje :/
mike
Tak dla uściślenia: jeden znak jest ciągiem o długości jeden, więc jaki problem?
dtb
gladiror: czy ty wiesz jak dziala operator OR? wyrazenie ("v" or ">" or "=") zwroci true, a my nie chcemy przecież tego!
  1. <?php
  2. function szukaj ($text, $znaki)
  3. {
  4. for ($i=0; $i<strlen ($znaki); $i++)
  5. {
  6. if (strpos($text, $znaki[$i]) !== false)
  7. return true;
  8. }
  9. return false;
  10. }
  11. if (szukaj ($zdanie, 'v&>='));
  12. ?>
AdamT
Cytat(mike_mech @ 2006-01-10 10:24:01)
Tak dla uściślenia: jeden znak jest ciągiem o długości jeden, więc jaki problem?

no to w sumie nie ma problemu gdyyby nie to
ze "v" or "g" or "c" nie dziala and tez nie :/
dtb
Wyjasnie krok po kroku dlaczego nie dziala twoj sposob:

kazdy znak zwraca prawde czyli taki kod:
"v" or ">" or "="
to jest to samo co to:
true or true or true
a takie wyrazenie zwroci:
true

kod:
strstr($zdanie, "v" or ">" or "=")
poszuka wtedy:
strstr($zdanie, true)
a to nie jest zadany efekt.
gladiror
Czyli w końcu chodzi o to, żeby sprawdzało czy jest króryśkolwiek z poniższych znaków w ciągu? Jeżeli jest to zwraca wartość true (("<br><br>Zdanie <b><font color=\"green\">zawiera</b></font> operatory logiczne, idz do kroku 2 ), a jak nie ma to false (\n<br><br>Zdanie <b><font color=\"red\">nie zawiera</b></font> operatorow logicznych )?
R4v3N
  1. <?php
  2.  
  3. $zdanie = "(p ^ q) => (p v q) <=> q";
  4. $op_tab = array('=>','<=>', '^','v'); // tablica operatorow logicznych od lewej: wynika z, rownowazne, wieksze, mniejsze
    , iloczyn, alternatywa
  5. $ilosc = 0;
  6.  
  7. for($i=0;$i<count($op_tab);$i++) {
  8. if(strpos($zdanie, $op_tab[$i])) $ilosc++;
  9. }
  10.  
  11. printf("W zdaniu '<b>%s</b>' wystepuje '<b>%s</b>' operatorow", $zdanie, $ilosc);
  12.  
  13. ?>


Za błedy przepraszam pisane z palca tongue.gif


pzdr.
AdamT
I ciagle ten sam problem :/

  1. <?php
  2. echo $zdanie;
  3. $o2_tab = array('v','&','>','='); // alternatywa, koniunkcja, implikacja, rownosc 
  4. $index=0;
  5. if (strpos($zdanie, $o2_tab[$index])!==False)
  6. echo ("<br><br>Zdanie <b><font color="green">zawiera</b></font> operatory logiczne, idz do kroku 2 ");
  7. else
  8. echo ("n<br><br>Zdanie <b><font color="red">nie zawiera</b></font> operatorow logicznych ");
  9. ?>


Wyswietla sie ze sa operatory logiczne ale tylko jak sa wszystkie :/
A ja chce zeby jak PRZYNAJMNIEJ jeden z nich bedzie to sie ma wyswietlic echo1
R4v3N
a widziales moj kod ?

bo wnioskuje ze nie.
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.