Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]weryfikowanie zawartości treści w zmiennej
bleze
post 16.01.2009, 17:16:56
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.01.2007

Ostrzeżenie: (10%)
X----


Utworzyłem tablicę:
  1. <?php
  2. $array = array( "psa", "kota", "krowę");
  3. ?>

I zmienną $wer:
  1. <?php
  2. $wer = "Ala ma kota"
  3. ?>

I chciałbym teraz sprawdzić czy któryś z elementów z tablicy array występuje w łańcuchu zmiennej $wer. Jak to zrobić?
Go to the top of the page
+Quote Post
kefirek
post 16.01.2009, 17:34:44
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


Można tak
  1. <?php
  2. $array = array( "psa", "kota", "krowę");
  3. $wer = 'Ala ma kota';
  4.  
  5. $wyrazy = explode(" ", $wer);
  6.  
  7. $tab = array();
  8. foreach($wyrazy AS $element) {
  9. if(array_search($element,  $wyrazy)) { $tab[] = $element;}
  10. }
  11.  
  12. echo 'znalezione';
  13. foreach($tab AS $wynik) {
  14. echo $wynik.'<br>';
  15. }
  16. ?>


Ten post edytował kefirek 16.01.2009, 17:35:09
Go to the top of the page
+Quote Post
bleze
post 16.01.2009, 20:16:37
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.01.2007

Ostrzeżenie: (10%)
X----


tylko dlaczego kiedy zmieniłem wartość $wer na:
  1. <?php
  2. $wer = 'Ala ma rybki';
  3. ?>

to otrzymałem:
"znalezionema
rybki"
o co może chodzić?
Go to the top of the page
+Quote Post
erix
post 16.01.2009, 22:18:40
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~kefirek, nie wiem, czy wiesz, ale jeśli zaglądałeś do manuala, to pewnie zauważyłeś, że array_search" title="Zobacz w manualu PHP" target="_manual może zwrócić zero, które przy rzutowaniu na bool zwraca false. Stąd, jeśli szukana znajduje się na zerowej pozycji, to warunek nie jest spełniony, a powinien być.

  1. <?php
  2. $arr = array('psa', 'kota', 'krowę');
  3.  
  4. $str = 'Ala ma kota';
  5. $str = explode(' ', $str);
  6.  
  7. $found = array();
  8.  
  9. foreach($str as $x){
  10.   if(array_search($x, $arr)!==false){
  11.      $found[] = $x;
  12.   }
  13. }
  14. ?>


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
bleze
post 16.01.2009, 23:04:46
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.01.2007

Ostrzeżenie: (10%)
X----


a jak zrobić żeby wyszukało również w łańcuchu $str czyli jeżeli zmienna $str zawiera 'Ala ma kota!' (wykrzyknik na końcu) to również warunek byłby spełniony (został znaleziony element z tablicy)

Ten post edytował bleze 16.01.2009, 23:05:06
Go to the top of the page
+Quote Post
erix
post 16.01.2009, 23:50:52
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




substr" title="Zobacz w manualu PHP" target="_manual


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kefirek
post 17.01.2009, 08:50:10
Post #7





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


Cytat(erix @ 16.01.2009, 22:18:40 ) *
~kefirek, nie wiem, czy wiesz, ale jeśli zaglądałeś do manuala, to pewnie zauważyłeś, że array_search" title="Zobacz w manualu PHP" target="_manual może zwrócić zero, które przy rzutowaniu na bool zwraca false. Stąd, jeśli szukana znajduje się na zerowej pozycji, to warunek nie jest spełniony, a powinien być.

  1. <?php
  2. $arr = array('psa', 'kota', 'krowę');
  3.  
  4. $str = 'Ala ma kota';
  5. $str = explode(' ', $str);
  6.  
  7. $found = array();
  8.  
  9. foreach($str as $x){
  10.  if(array_search($x, $arr)!==false){
  11.     $found[] = $x;
  12.  }
  13. }
  14. ?>




Oj bo się pomyliłem zdarza się
Powinno być tak działa na 100% i jak słowo zawiera wykrzyknik to także znajduje go


  1. <?php
  2. $array = array('psa', 'kota', 'krowę');
  3. $wer = 'Ala ma kota';
  4.  
  5. $wyrazy = explode(' ', $wer);
  6. $tab = array();
  7. foreach ($wyrazy AS $wynik) {
  8. if (in_array($wynik, $array)) { $tab[] = $wynik;}
  9. }
  10.  
  11. echo 'Znaleziownych '.count($tab).'<br>';
  12. foreach ($tab AS $znalezione) {
  13. echo $znalezione.'<br>';
  14. }
  15. ?>


Ten post edytował kefirek 17.01.2009, 08:52:43
Go to the top of the page
+Quote Post
erix
post 17.01.2009, 13:26:59
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale to jest tak naprawdę ten sam kod. winksmiley.jpg Jedyną różnicą w porównaniu do array_search" title="Zobacz w manualu PHP" target="_manual jest zwracana wartość true/false.

Nie rozróżni Ci, czy jest wykrzyknik, czy nie, gdyż sprawdzany jest znak po znaku.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
bleze
post 19.01.2009, 13:35:59
Post #9





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.01.2007

Ostrzeżenie: (10%)
X----


erix, substr" title="Zobacz w manualu PHP" target="_manual czy strpos" title="Zobacz w manualu PHP" target="_manual?
skrypt który podał kefirek nie znajduje słowa jeśli stoi przy nim np. wykrzyknik
Może da się to jakoś zrobić funkcją strpos" title="Zobacz w manualu PHP" target="_manual?
Go to the top of the page
+Quote Post
erix
post 19.01.2009, 17:26:06
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




substr" title="Zobacz w manualu PHP" target="_manual podałem dlatego, aby wycinać cały ciąg bez jednego znaku; nic nie wspomniałeś, że przy każdym słowie może stać znak.

Jeśli przy każdym, to wtedy robisz coś takiego: (zamiast tego kodu pętla)
  1. <?php
  2. if(array_search($x, $arr)!==false){
  3.     $found[] = $x;
  4.  }
  5. ?>

:
  1. <?php
  2. foreach($arr as $y){
  3.   if(strpos($x, $y)!==false){
  4.      $found[] = $x;
  5.      break;
  6.   }
  7. }
  8. ?>


pisane z palca


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 09:07