Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja eregi()
Forum PHP.pl > Forum > Przedszkole
Sylwin
Mam taki ciąg: alamakota daje:

  1. <?php
  2. $wczym="alamakota";
  3. $co="ala";
  4.  
  5. if(eregi($wczym,$co)){
  6. echo"Jest!";
  7. }else{
  8. echo"Nie ma!";
  9. }
  10. ?>


Jak zrobić żeby pokazywało Jest tylko wtedy gdy "ala" jest osobnym słowem w np w "ala ma kota" a nie w "alamakota"??
Siner
Jedyny jaki pomysł mi przychodzi do głowy to rozbić zdanie na wyrazy i wsadzić je do tablicy, a później sprawdzić czy wyraz szukany jest w tej tablicy:
  1. <?php
  2. $wczym = 'ala ma kota';
  3. $co = 'ala';
  4. $tablica = explode(' ', $wczym);
  5.  
  6. if(in_array($co, $tablica)
  7. {
  8. echo 'Jest';
  9. }
  10. ?>


Tylko to chyba mało optymalne i pisane z palca.
Kicok
  1. <?php
  2.  
  3. $wczym1 = 'alamakota';
  4. $wczym2 = 'ala ma kota';
  5.  
  6. $co = 'ala';
  7.  
  8.  
  9. if( preg_match( '/b' . preg_quote( $co, '/' ) . 'b/i', $wczym1 ) ) {
  10. echo 'Jest';
  11. }
  12. else {
  13. echo 'Nie ma';
  14. }
  15.  
  16. ?>


preg_match" title="Zobacz w manualu PHP" target="_manual - podobna składnia do wyrażeń ereg* (POSIX'owych)
preg_quote" title="Zobacz w manualu PHP" target="_manual - wstawia ukośniki przed metaznakami tak, by były traktowane jako zwykły tekst

\b - początek lub koniec wyrazu.


Jako że \b nie jest doskonałe będziesz jeszcze musiał przetestować jak funkcja zachowuje się z przecinkami, kropkami, apostrofami czy innymi znakami interpunkcyjnymi.
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.