Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak znalezc roznice w takich samych stringach
misty
post 9.11.2011, 12:24:56
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


Czesc, mam nastepujacy problem: musze znalezc fragment stringa w stringu. Wszystko jest ok bo do tego moge uzyc metody strpos, ale zauwazylam ze nie zawsze mi dziala. Przyjrzalam sie blizej i o to co wyszlo:

Moja metoda wyglada mniej wiecej nastepujaco:

  1. function test($text, $strToSearch) {
  2. $index = strpos($text, $strToSearch);
  3. var_dump($index);
  4. }


w niektorych przypadkach jednak string($strToSearch) sie nie wynajduje (mimo tego ze istnieje). Wyswietlilam sobie $text i przypisalam go do nowej zmiennej:

  1. function test($text, $strToSearch) {
  2.  
  3. $newText = "to jest moj tekst z $text";
  4. $index = strpos($newText, $strToSearch);
  5. var_dump($index);
  6. }



i teraz string wynajduje sie za kazdym razem (czyli $index != false). O co jednak chodzi? dlaczego jak przepisalam wartosc zmiennej $text to $newText to dla $newText mi dziala zawsze?

Wypisalam sobie $text i $newText- sa te same. ich dlugosci-te same. sprawdzilam typ poprzez getype - oba string.

Nie mam zielonego pojecia o co chodzi?? Czy ktos z Was moze ma?

pzdr,
misty

Ten post edytował misty 9.11.2011, 12:28:09
Go to the top of the page
+Quote Post
blooregard
post 9.11.2011, 12:40:10
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Może spróbuj z strstr():

http://pl.php.net/manual/en/function.strstr.php


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Crozin
post 9.11.2011, 12:48:18
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Stawiam na to, że rozwiązanie problemu znajdziesz w czerwonej ramce na stronie manuala: http://php.net/manual/en/function.strpos.php
Go to the top of the page
+Quote Post
misty
post 9.11.2011, 12:52:23
Post #4





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


czesc,
dzieki za odpowiedzi.

@blooregard - takie samo zachowanie dla opisanych przeze mnie przypadkow jak dla strpos

@Crozin - przeczytales calego mojego posta? nie chodzi o to ze zwraca mi false. niech sobie bedzie false, jesli fraza nie zostala znaleziona. nie to jest problemem.

Ten post edytował misty 9.11.2011, 12:52:36
Go to the top of the page
+Quote Post
nospor
post 9.11.2011, 13:01:30
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
@Crozin - przeczytales calego mojego posta? nie chodzi o to ze zwraca mi false. niech sobie bedzie false, jesli fraza nie zostala znaleziona. nie to jest problemem.
To chyba ty nie uważnie przeczytałeś.

No ale pokolei
1) Piszesz (czyli $index != false)
Nie wiem czy wiesz, ale 0 == false jest true, false == false jest true, ale już 0 === false jest false a false === false jest true.

2)
$newText = "to jest moj tekst z $text";
Cytat
Wypisalam sobie $text i $newText - są takie same
Guzik prawda. Jak mogą być takie same, skoro newTekst generujesz z dwóch ciągów: "to jest mój tekst z " oraz z $text? Nie, onie nie są takie same. Z racji, że $text dopisujesz dalej, to strpos nigdy z $newTekst nie da ci 0, zaś z samego tekst może dać ci 0 i jeśli robisz $index != false to możesz mieć problem. Masz robić $index !== false


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
misty
post 9.11.2011, 13:07:10
Post #6





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


no i chcialam kliknac na "odpowiedz" a kliknelam na "pomogl". ehh, nie da sie tego cofnac chyba. tak, sprawdzilam rowniez z === (nie umiescilam tego w przykladzie i nie napisalam-moj blad). ale wartosc stringow jest rowna (ok, nie sa to te same obiekty - swoja droga czy w phpie to istnieje jako obiekt?).

Skoro wartosci (nie obiekty, ale wartosci) $text i $newText sa te same-dlaczego dla jednego przypadku znajduje mi strpos a dla drugiego nie? z tego co sie orientuje to strpos przeszukuje String - jego wartosc, nic innego. Wiec skoro wartosc jest ta sama-skad rozne zachowania?
Go to the top of the page
+Quote Post
nospor
post 9.11.2011, 13:10:22
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czemu nie napiszesz nam co te twoje rzeczy zawierają? Czemu mamy polegać na Twoich domysłach i sami sie domyślać czy używać == czy może ===? Pomóż nam sobie pomóc.

  1. function test($text, $strToSearch) {
  2.  
  3. $newText = "to jest moj tekst z $text";
  4. $index = strpos($newText, $strToSearch);
  5. $index2 = strpos($text, $strToSearch);
  6. echo 'wynik:';
  7. var_dump($index);
  8. echo 'wynik2:';
  9. var_dump($index2);
  10.  
  11. echo 'text:';
  12. var_dump($text);
  13. echo 'nowy tekst:';
  14. var_dump($newText);
  15. echo 'szukana:';
  16. var_dump($strToSearch);
  17. }

Co wyświetla?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post 9.11.2011, 13:11:35
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Pokaż cały kawałek kodu, na którym można zaobserwować błędne działanie skryptu.

Cytat
swoja droga czy w phpie to istnieje jako obiekt?
Nie, w PHP tekst nie jest obiektem.
Go to the top of the page
+Quote Post
misty
post 9.11.2011, 13:13:39
Post #9





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


wiecie co, mi sie wydaje ze to moze byc wina tego jak te dane sa zapisywane w bazie. tzn: paremeterem ktory przekazuje do mojej funkcji ($text) jest
dana wyciagnieta z bazy. Teraz jak patrze, to nie wyglada ona tak:
  1. to jest moj super tekst testowy lalala 1 2 3


tylko

  1. to jest moj super tekst
  2. testowy lalala
  3. 1 2 3


zas do $newText przypisywalam "to jest moj super tekst testowy lalala 1 2 3". Mysle ze to jest problem.
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: 25.06.2025 - 11:14