![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 2 Dołączył: 25.06.2009 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
witam,
mam dość dziwny problem. Napisałem taką oto funkcję:
jak widać jako parametry podaję dwie zmienne (tekstowe), które mają zostać porównane. Problem polega na tym, że coś mi umyka i gdy podam dwie wartości, które są takie same, to funkcja mi się myli. Tak wiem... brzmi to dziwnie... Wartość stałej CODE_WRONG to 5, natomiast CODE_OK to 0. Po wykonaniu tej funkcji wyświetlam dodatkowo wynik działania tej funkcji. Oto przykładowy wynik (kod html) Jak widać i jedna i druga zmienna zawierają tekst "world" po czym jest jedna wolna linia. Dlaczego to nie przechodzi, kurne no... Przecież to podstawy są ![]() ![]() EDIT: w dodatku nie widzę tam żadnych białych znaków, które mogłyby się tam ukryć. Może to coś da, ale jedną wartość pobieram z bazy danych, natomiast druga to jest wynik działania jakiegoś programu zewnętrznego (tzn to co wyświetla). W bazie danych mam zapisany DOKŁADNIE taki tekst: Cytat world natomiast program, który uruchamiam (napisany w c++) zawiera tylko taką instrukcję:
Program wywołuję funkcją exec mniej więcej tak:
Zmienna $output jest przekazywana jako 1 parametr, natomiast to co w bazie jako 2. Nie wiem co jeszcze mogę napisać... Ten post edytował kabanek 4.11.2010, 20:45:19 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
zrób var_dump na obu zmiennych będziemy wiedzieli dokładnie czy są identyczne.
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 2 Dołączył: 25.06.2009 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
napisałem tak:
i jako wynik dostałem:
natomiast kod HTML wygląda tak:
czyli chodzi o ten "enter" |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
użyj funkcji http://php.net/manual/pl/function.rtrim.php przed porównaniem
@DOWN rzeczywiście:) już dałem dobry Ten post edytował tehaha 5.11.2010, 17:03:57 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 2 Dołączył: 25.06.2009 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
chyba link jest zły
![]() dalej to samo...
i jako wyjście dostałem:
kod HTML: |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 267 Pomógł: 36 Dołączył: 8.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
funkcja, którą napisałeś, nie może się mylić, widocznie te wartości(na oko wyglądają tak samo) są różne, ostatnie znaki mogą mieć inny kod ASCII, jeśli możesz opuścić sprawdzanie białych znaków, to użyj funkcji trim(albo tą, co podał tehaha).
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 2 Dołączył: 25.06.2009 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
właśnie nie mogę ich opuścić. Może do wina kodowania. W bazie ten tekst jest zapisany w latin1_swedish_ci a strona uruchamiana na linuksie, czyli pewnie wynik programu jest w UTF-8.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 267 Pomógł: 36 Dołączył: 8.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
wyciągnij kod ostatniego znaku z tych 2 stringów funkcją ord. Następnie funkcja str_replace:
zamiast chr(65) podaj numer tego znaku z bazy, a w drugim chr() podaj zamiennik UTF-8 ![]() Ten post edytował *OuTSideR* 6.11.2010, 20:00:01 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
[r|l]trim() jak każda normalna funkcja przyjmie jakąś wartość jako argument, skopiuje ją sobie i zwróci wynik, tu: ciąg z usuniętymi skrajnymi białymi znakami. Tak więcj: A problemem są zapewne różne znaki dla końca linii (możliwe są: \r, \n i \r\n). Tutaj masz przedstawione jak to wygląda: http://ideone.com/OPYIu |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 2 Dołączył: 25.06.2009 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
wyciągnij kod ostatniego znaku z tych 2 stringów funkcją ord. Następnie funkcja str_replace: zamiast chr(65) podaj numer tego znaku z bazy, a w drugim chr() podaj zamiennik UTF-8 ![]() miałeś rację - w jednej zmiennej miał kod 10 a w drugiej 13. Ten post edytował kabanek 7.11.2010, 18:18:06 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 267 Pomógł: 36 Dołączył: 8.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tylko pamiętaj, te znaki mogą wystąpić też w środku/na początku. Pokombinuj z innymi znakami zapisywanymi do bazy, pobierz je i porównaj z oryginałem(chodzi o białe znaki)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 10:17 |