[PHP]strpos |
[PHP]strpos |
26.04.2016, 20:05:50
Post
#1
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) |
Kiedy wysyłam w $_POST['text'] wyraz "kurde" pokazuje FALSE ale wysyłam w $_POST['text'] co kolwiek przed "kurde" np. "kkurde" lub "ikurde" lub ".kurde" wtedy zwraca TRUE. Czy ktoś mógłby mi to wytłumaczyć ? Ten post edytował djtomaszq 26.04.2016, 20:07:03 |
|
|
26.04.2016, 20:08:21
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Na 100% nie zwraca FALSE.
Sprawdź co zwraca. -------------------- |
|
|
26.04.2016, 20:11:28
Post
#3
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) |
Jak wpisze w formularzu "kurde" zwraca "miły komć" a jak wpisze ".kurde" to "Jest zakazane słowo!". Tak jakby pierwsza litera sie nie liczyła (?)
|
|
|
26.04.2016, 20:12:17
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Sprawdź co zwraca strpos dla tej sytuacji.
-------------------- |
|
|
26.04.2016, 20:17:23
Post
#5
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) |
Powinien zwracać TRUE
|
|
|
26.04.2016, 20:32:38
Post
#6
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
Źle to robisz.
Funkcja strpos zwraca na której pozycji jest słowo. Jeśli na pierwszej to zwróci 0... Php przekonwetruje 0 do false. A false da wynik z else. I zwraca false jeśli nie istnieję. Dlatego musisz sprawdzać czy funkcja nie zwróci false. Dodatkowo lepiej zrób stripos zamiast strpos jeżeli chcesz uwzględnić także Kurde KURDE itd.
Nawet w manualu masz ostrzeżenie przed tym - lepiej tam sprawdzaj gdyby coś powinno działać a nie działa jak trzeba. stripos(); Cytat Returns the position of where the needle exists relative to the beginnning of the haystack string (independent of offset). Also note that string positions start at 0, and not 1.
Returns FALSE if the needle was not found. Warning This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function. Ten post edytował KsaR 26.04.2016, 20:41:06 -------------------- |
|
|
26.04.2016, 20:46:38
Post
#7
|
|
Grupa: Zarejestrowani Postów: 3 033 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) |
ah ta Yoda
|
|
|
26.04.2016, 20:53:02
Post
#8
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
ah ta Yoda Niestety weszło mi w nawyk... Łatwiej mi się czyta.. Powoli też się do PSR przyzwyczajam (a byłem przeciwnikiem klamer w jednej lini) -------------------- |
|
|
26.04.2016, 20:53:04
Post
#9
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) |
Robię kurs PHP i jestem na dziale z strpos i tam piszą że sprawdza się tak podciag w ciągu, dlatego nie rozumiałem dlaczego to działa przy dodaniu jakiejkolwiek litery na początek szukanego podciagu.
|
|
|
26.04.2016, 20:56:11
Post
#10
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
Robię kurs PHP i jestem na dziale z strpos i tam piszą że sprawdza się tak podciag w ciągu, dlatego nie rozumiałem dlaczego to działa przy dodaniu jakiejkolwiek litery na początek szukanego podciagu. Bo ta litera bedzie na pierwszej pozycji czyli pozycja "0". Kolejny znak to juz pozycja "1" php konwetruje 1 do true. I sie wykona. Dlatego tak jak pisalem musisz patrzeć czy stripos($var, 'slowo')!==false. Wszelkie kursy podchodz z dystansem małym, nie raz trafią się przeoczenia lub i literowki w kodzie. -------------------- |
|
|
26.04.2016, 20:59:34
Post
#11
|
|
Grupa: Zarejestrowani Postów: 3 033 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) |
chodzi o to, że php rzutuje 0 do false, wiec jak znajdzie podciąg w ciągu na 1 pozycji to zwróci 0 co zostanie rzutowane na false i warunek nie zostanie spełniony
Ale psr nie promuje Yody a klamry w jednej lini sprawiają, że jest czytelniej ale nie w przypadku metod, klas, tak jak np w dziale ocen ostatnio był taki kod, nie da sie tego przeczytać potem Ten post edytował com 26.04.2016, 21:00:06 |
|
|
26.04.2016, 21:15:06
Post
#12
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Bo tak strasznie ciężko jest zajrzeć do manuala...
Cytat Returns the position of where the needle exists relative to the beginning of the haystack string (independent of offset). Also note that string positions start at 0, and not 1. Returns FALSE if the needle was not found. Warning This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function. |
|
|
26.04.2016, 22:07:17
Post
#13
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) |
.. ale z tego forum można się więcej nauczyć i efektywniej
To mam do tego jeszcze jedno pytanie czy tak będzie dobrze? zamiast znaku równości znak identyczności, działa. Ten post edytował djtomaszq 26.04.2016, 22:08:39 |
|
|
27.04.2016, 01:44:27
Post
#14
|
|
Grupa: Zarejestrowani Postów: 3 033 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) |
owszem jest ok, a false pisz małymi literami
|
|
|
27.04.2016, 09:34:21
Post
#15
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) |
Super, to jeszcze zapytam dla lepszej mojej wiedzy, dlaczego małymi pisać false?
P. S. .. i czy jest możliwość sprawdzania strpos w tablicy słów? np. słowo[1] = kurde, słowo[2] = gupek itp.. np tak czy tylko w petli sprawdzać? Ten post edytował djtomaszq 27.04.2016, 09:37:00 |
|
|
27.04.2016, 09:53:59
Post
#16
|
|
Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) |
Małymi bo PSR: https://github.com/php-fig/fig-standards/bl...-style-guide.md
A co do tablicy to tylko w pętli. |
|
|
27.04.2016, 09:57:12
Post
#17
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
|
|
|
27.04.2016, 10:40:13
Post
#18
|
|
Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) |
Można też zrobić joina na tablicy i to sprawdzać Ale bezpośrednio strpos się nie da
|
|
|
27.04.2016, 10:49:23
Post
#19
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) |
ok, dzięki za pomoc, to chyba w pętli będzie lepiej
|
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 14:29 |