Допустим, у меня есть строка: что-то
Когда я убегаю в JS, я получаю следующее: % 73% 6F% 6D% 65% 74% 68% 69% 6E% 67
поэтому я могу использовать этот код в JS для его декодирования:
document.write(unescape('%73%6F%6D%65%74%68%69%6E%67'));
Мне нужна функция escape в PHP, которая будет делать то же самое (будет кодировать что-то : % 73% 6F% 6D% 65% 74% 68% 69% 6E% 67 )
Как это сделать ?
PHP:
rawurlencode("your funky string");
JS:
decodeURIComponent ( 'ваш% 20funky% 20string');
Не используйте escape
поскольку он устарел.
rawurldecode('%73%6F%6D%65%74%68%69%6E%67');
Сначала прояснение:
Допустим, у меня есть строка: что-то
Когда я убегаю в JS, я получаю следующее:% 73% 6F% 6D% 65% 74% 68% 69% 6E% 67
Это неправильно . (Btw, функция escape()
функции JS устарела. Вместо этого вы должны использовать encodeURIComponent()
!)
поэтому я могу использовать этот код в JS для его декодирования: document.write (unescape ('% 73% 6F% 6D% 65% 74% 68% 69% 6E% 67'));
Да, это напишет «что-то» в документе (как escape()
, также unescape()
устарел, вместо этого используйте decodeURIComponent()
).
На ваш вопрос:
Мне нужна функция [snip] в PHP, которая [snip] кодирует что-то % 73% 6F% 6D% 65% 74% 68% 69% 6E% 67
То, что вы ищете, это шестнадцатеричное представление charachters. Итак, чтобы получить строку «% 73% 6F% 6D% 65% 74% 68% 69% 6E% 67» из строки «что-то» , вам понадобится:
<?php function stringToHex($string) { $hexString = ''; for ($i=0; $i < strlen($string); $i++) { $hexString .= '%' . bin2hex($string[$i]); } return $hexString; } $hexString = stringToHex('something'); echo strtoupper($hexString); // %73%6F%6D%65%74%68%69%6E%67
Backwards:
function hexToString($hexString) { return pack("H*" , str_replace('%', '', $hexString)); } $string = hexToString('%73%6F%6D%65%74%68%69%6E%67'); echo $string; // something