Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funckja sprawdzająca czy znak występuje w tekście
Forum PHP.pl > Forum > Przedszkole
-pastor-
Witam, chcę sprawdzić czy znak ! znajduje się w zmiennej $tekst. Jakiej funkcji mam użyć??
marcio
Funkcje strpos()/strstr().
-pastor-
  1. <?php
  2. $zdanie = 'To jest ostatni raz!';
  3.  
  4. if (strstr('!',$zdanie) == true) {
  5. echo('jest');
  6. }
  7. ?>


Niestety ten skrypt mi nie działa, nie odnajduje wykrzyknika:/
nitek
  1. <?php
  2. $zdanie = 'To jest ostatni raz!';
  3.  
  4. if (strpos($zdanie, "!") >= 0) {
  5. echo 'jest';
  6. }
  7. else
  8. {
  9. echo 'nie ma';
  10. }
  11. ?>


btw. echo to nie funkcja, nie dawaj ().
erix
Cytat
This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.


Więc takie sprawdzania strpos()>=0, to sobie można... Najbezpieczniej:

  1. <?php
  2. if(strpos($ciag, '!')!==false){
  3. //jest
  4. }
  5. ?>
zegarek84
dobrzes poprawił ale moim zdaniem poprawniej by był warunek:
if (strpos($zdanie, "!") != FALSE)

php manual strpos()


[edit]erix był szybszy ;p choc minimalny blad jest bo 2x == dla równosci a dla róznego tylko != a u niego !== ;p
nitek
Cytat(erix @ 15.11.2008, 22:46:20 ) *
Więc takie sprawdzania strpos()>=0, to sobie można... Najbezpieczniej:

  1. <?php
  2. if(strpos($ciag, '!')!==false){
  3. //jest
  4. }
  5. ?>


pomyśl co sobie można... funkca zwraca false, nic, albo 0 w przypadku gdy nie znajdzie ciągu, gdy znajdzie, zawsze zwróci zero lub więcej - jednym słowem cyfrę. więc nie wiem czego chcesz od mojego sprawdzenia...?
Cytat który wstawiłeś jest uwagą dla osób, które sprawdzają, czy tekst nie został odnaleziony, a nie tak jak u mnie - tekst został odnaleziony.
sowiq
Cytat(zegarek84 @ 15.11.2008, 22:47:39 ) *
minimalny blad jest bo 2x == dla równosci a dla róznego tylko != a u niego !== ;p


== to porównanie dwóch wartości (np. zmiennych)
=== to porównanie IDENTYCZNOŚCI, czyli poza zawartością również typ zmiennych musi się zgadzać
erix
Cytat
pomyśl co sobie można... funkca zwraca false, nic, albo 0 w przypadku gdy nie znajdzie ciągu, gdy znajdzie

A co, gdy szukany string znajdzie się na pozycji zero? snitch.gif

Sprzeczam się, bo (int)false wynosi 0. A przy sprawdzeniu łącznie i typu, i wartości, to wyjdzie Ci tak, jak powinno - czyli typ i wartość false, a nie tylko wartość.
nitek
Cytat(erix @ 15.11.2008, 23:14:38 ) *
A co, gdy szukany string znajdzie się na pozycji zero? snitch.gif

Sprzeczam się, bo (int)false wynosi 0. A przy sprawdzeniu łącznie i typu, i wartości, to wyjdzie Ci tak, jak powinno - czyli typ i wartość false, a nie tylko wartość.


ok, zwracam honor i przyznaje się do pomyłki winksmiley.jpg - pewniejszy będzie twój sposób.
zegarek84
SORKI ŻE SIĘ WTRĄCAM gdyz w programowaniu uważam siebie za "newbi" ale zacytuje fragment z manuala:
Cytat
  1. <?php
  2. $email  = 'name@example.com';
  3. $domain = strstr($email, '@');
  4. echo $domain; // prints @example.com
  5.  
  6. $user = strstr($email, '@', true); // As of PHP 5.3.0
  7. echo $user; // prints name
  8. ?>

tak wiec nawet jesli '!' znajdzie się na pozycji 0 to zwróci wartość >0 gdyż litera jest bodajże zawsze wjeksza od cyfry - przynajmniej tak mi zawsze wypadała w sortowaniu ;p

false to zawsze jest logiczne 0 a jesli '!' bedzie na pozycji 0 to powinno zwrócić '!' - gorzej gdybysmy szukali znaku '0' ;p - ale tak tylko mi się wydaje - jeśli tak nie jest to mnie poprawcie ;p
erix
Sory, ale to się ma nijak do sprawdzania obecności znaku; strtr" title="Zobacz w manualu PHP" target="_manual zawsze zwraca wartość typu string, po przetworzeniu oryginału.
-pastor-
Ludzie, jak mam sprawdzić czy w ciągu występuje znak?? biggrin.gif Najpr
5a8
ościej, najłatwiej? biggrin.gif
erix
Post #5.
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.