Autor Zpráva
user243
Profil
hoj,
pří úpravě jednoho scriptu jsem narazil na problém, kdy mi při úpravě delšího řetězce (například dvě věty) funkce htmlspecialchars() nevrátila vůbec nic; u jednoduché slova (například "blbost") šlo vše bez problému; php mi nenapsalo žádné varování, ani upozornění;
řetězec jsem upravoval takto:
$zprava = htmlspecialchars($zprava);
dočetl jsem se, že se tato funkce používá zpravidla až u výstupu, tak jsem zkusil:
echo htmlspecialchars($zprava);
a obsah se i u delšího řetězce bez problému vypsal;
nakonec jsem musel zadat všechny parametry, aby to delší řetězec "přežil":
$zprava = htmlspecialchars($zprava, ENT_QUOTES, "cp1251");
na hostingu, kde běží php 5.3.14, to funguje bez problémů i bez parametrů; já mám na localhostu php 5.4.6;

může za to rozdílná verze php? na manuálu jsem si nějakého upozornění nevšiml;
díky
Alphard
Profil
Na 5.4 nepozoruji problém, ale z vašeho popisu mi není zřejmé, co vlastně nejde. Můžete dát konkrétní případ, co vám nefunguje?
K tomu vašemo kódu snad jen poznámka, že u nás by bylo lepší se držet cp1250, když už chcete cp*. Já už nedělám v ničem jiném než utf-8.
user243
Profil
na localhostu mi nejde použít htmlspecialchars() na delším řetězci bez toho, aby výsledný text zmizel, chová se to, že bez použití parametru je proměnná jen prázdný řetězec; cp1250 není podporovaný charset pro tuto funkci; utf-8 nemám rád, protože mi to vždy vše rozbije, schválně jsem jej zkusil dát jako charset místo cp1251 a výsledek byl zase prázdný řetězec; možná je to tím, že všechny soubory jsou uložené v ascii, ale mně to tak vyhovuje;
Davex
Profil
user243:
Od verze PHP 5.4 je jako výchozí kódování funkce htmlspecialchars() nastaveno UTF-8 (místo původního ISO-8859-1), a pokud mu dáváš na vstupu jiné kódování, tak tam mohou vzniknout z pohledu UTF-8 neplatné sekvence a z bezpečnostních důvodů je vrácen prázdný řetězec (viz popis návratové hodnoty v dokumentaci).
user243
Profil
aha, děkuji;

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0