Autor | Zpráva | ||
---|---|---|---|
miskith Profil |
#1 · Zasláno: 25. 12. 2011, 11:25:33 · Upravil/a: miskith
*Vyřešeno* - Viz "EDITED3" na konci.
Dobrý den, zajímalo by mě, jestli někdo ví, proč tento jednoduchý script konvertuje JSON pouze pokud mu to podstrčím přímo jako string, ale jako proměnnou to nechce vzít. Script: <?php echo $text = file_get_contents("http://api.microsofttranslator.com/V2/Ajax.svc/GetTranslations?appId=AppId&text=Ich%20bin%20here.&to=cs&maxTranslations=5&options={\"ContentType\":\"text/plain\"}"); echo "\n"; print_r(json_decode('{"From":"de","Translations":[{"Count":0,"MatchDegree":100,"MatchedOriginalText":"","Rating":5,"TranslatedText":"Jsem tady."}]}', true)); echo "\n"; print_r(json_decode($text, true)); ?> Výpis: {"From":"de","Translations":[{"Count":0,"MatchDegree":100,"MatchedOriginalText":"","Rating":5,"TranslatedText":"Jsem tady."}]} Array ( [From] => de [Translations] => Array ( [0] => Array ( [Count] => 0 [MatchDegree] => 100 [MatchedOriginalText] => [Rating] => 5 [TranslatedText] => Jsem tady. ) ) ) Jak vidíte. Co mi vráti file_get_contents() si zapíšu do proměnné $text. To co mi ta proměnná obsahuje vložím přímo do json_decode() a pod tím pouze tu proměnnou, ale provede se pouze první json_decode(). Zkoušel sem si i vypsat json_last_error() a to mi vypsalo 4. error (syntax). Děkuji za pomoc a přeji pěkné prožití vánočních svátků a šťastný nový rok ;). PS: AppId jsem tady na diskusi skryl. EDITED: Pořád to zkouším a zjistil sem, že pokud ručně zapíšu do proměnné text string, který vrací fce file_get_contents(), tak to funguje: $text = '{"From":"de","Translations":[{"Count":0,"MatchDegree":100,"MatchedOriginalText":"","Rating":5,"TranslatedText":"Jsem tady."}]}'; print_r(json_decode($text, true)); var_dump($text); EDITED3: Tak sem to už vyřešil.. Protože rozdíl délky stringů byly 3 znaky, zkusil sem dát: print_r(json_decode(substr($text, 3), true)); |
||
Mike8748 Profil |
#2 · Zasláno: 25. 12. 2011, 13:43:18
předpokládám že ty 3 záhadné znaky na začátku byla BOM signatura kterou ti tam vložil editor když si to ukládal jako utf8
ve většině normálních editorů jde vkládání BOM vypnout. |
||
miskith Profil |
#3 · Zasláno: 25. 12. 2011, 14:47:35
Já tam BOM nemám. Data tahám z Bing translatoru a když otevřu v prohlížeči tu URL (Bing translatoru) a podívám se do zdrojáku, není tam BOM (když je na webu BOM a podívám se do zdrojáku, vždycky tam vidím na začátku takové 3 znaky). Ale třeba nový Firefox už BOM nezobrazuje.
|
||
Časová prodleva: 12 let
|
0