| Autor | Zpráva | ||
|---|---|---|---|
| Petr Svetr Profil |
#1 · Zasláno: 6. 4. 2009, 15:28:18
Mam nejaky ajax formular, kde texty pred odeslanim na server zaescapuju pomoci js fce escape() a na serveru bych chtel takovy string zpet odescapovat - tedy pomoci php. Nenasel jsem nic kloudneho... Prosim poradte...
Petr |
||
| Fireous Profil |
#2 · Zasláno: 6. 4. 2009, 16:16:22
skús http://us3.php.net/manual/en/function.htmlentities.php a aj sekciu See also
|
||
| Petr Svetr Profil |
#3 · Zasláno: 7. 4. 2009, 11:07:10 · Upravil/a: Petr Svetr
Zkousel jsem psi kusy... a stale to nechodi jak ma...
Scenar: do formulare zadam string: ěščřžýáíéúů js po pouziti escape() vrati %u011B%u0161%u010D%u0159%u017E%FD%E1%ED%E9%FA%u016F V php pak pro dekodovani pouziji tuto fci:
function unescape($source, $iconv_to = 'UTF-8') {
$decodedStr = '';
$pos = 0;
$len = strlen ($source);
while ($pos < $len) {
$charAt = substr ($source, $pos, 1);
if ($charAt == '%') {
$pos++;
$charAt = substr ($source, $pos, 1);
if ($charAt == 'u') {
// we got a unicode character
$pos++;
$unicodeHexVal = substr ($source, $pos, 4);
$unicode = hexdec ($unicodeHexVal);
$decodedStr .= code2utf($unicode);
$pos += 4;
}
else {
// we have an escaped ascii character
$hexVal = substr ($source, $pos, 2);
$decodedStr .= chr (hexdec ($hexVal));
$pos += 2;
}
}
else {
$decodedStr .= $charAt;
$pos++;
}
}
if ($iconv_to != "UTF-8") {
$decodedStr = iconv("UTF-8", $iconv_to, $decodedStr);
}
return $decodedStr;
}
a s nekterymi znaky si to poradi a s nekterymi ne - v tomto pripade vraci: ěščřž�����ů (...a do databaze se ulozi jen ěščřž) |
||
| Petr Svetr Profil |
#4 · Zasláno: 7. 4. 2009, 12:47:25
vyreseno... uz nikdy vice AJAX a GET dohromady
|
||
|
Časová prodleva: 3 měsíce
|
|||
| LucaS Profil |
#5 · Zasláno: 13. 7. 2009, 17:17:43
[#4] Zdarec, a na jaké řešení jsi přišel...? Zrovna to šeřím a už hodinu googlím :-) díky
|
||
|
Časová prodleva: 8 měsíců
|
|||
| Davidh Profil * |
#6 · Zasláno: 6. 3. 2010, 11:01:45
proste pouzij POST a neescapuj
... taky sem to resil dlouho |
||
|
Časová prodleva: 16 let
|
|||
0