Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Nieudane porówanie dwóch stringów
kabanek
post
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ę:
  1. private function compareOutputs($userOutput, $output) {
  2. if ($userOutput == $output)
  3. return CODE_OK;
  4.  
  5. echo "Output: >>{$output}<<<br>";
  6. echo "userOutput: >>{$userOutput}<<<br>";
  7.  
  8. return CODE_WRONG;
  9. }


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)
  1. Output: >>world
  2. <<<br>userOutput: >>world
  3. <<<br>5

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ą (IMG:style_emoticons/default/tiredsmiley.gif) a błąd pewnie jakiś prosty (IMG:style_emoticons/default/dry.gif)

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ę:
  1. cout<<"world"<<endl;


Program wywołuję funkcją exec mniej więcej tak:
  1. exec(Config::$Softlimit." -f 0 -t {$task['maxtime']} {$this->Program} < $inputFile", $output, $result);


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kabanek
post
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 2
Dołączył: 25.06.2009
Skąd: Nowy Sącz

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


napisałem tak:
  1. private function compareOutputs($output, $userOutput) {
  2. if ($userOutput == $output)
  3. return CODE_OK;
  4.  
  5.  
  6. for ($i = 0; $i < strlen($output); ++$i)
  7. if ($output[$i] != $userOutput[$i])
  8. echo "Roznia sie na $i miejscu<br>";
  9.  
  10. var_dump($output);
  11. var_dump($userOutput);
  12.  
  13. /*echo "Output: >>{$output}<<<br>";
  14. echo "userOutput: >>{$userOutput}<<<br>";
  15. echo "Dlugosci tekstow: ".strlen($output)." oraz ".strlen($userOutput)."<br>";*/
  16.  
  17. return CODE_WRONG;
  18. }

i jako wynik dostałem:
  1. Roznia sie na 5 miejscu
  2. string(6) "world " string(6) "world "

natomiast kod HTML wygląda tak:
  1. Roznia sie na 5 miejscu<br>string(6) "world
  2. "
  3. string(6) "world
  4. "


czyli chodzi o ten "enter"
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 07:09