javascript urlencode php urlencode
urlencode() из PHP в JavaScript?
Я ищу аналогичную функцию, как urlencode() из PHP только в JavaScript. jQuery библиотека разрешена.
В принципе, мне нужно закодировать строку, а затем перенаправить пользователя на другую страницу только с помощью JavaScript.
6 ответов
У меня есть URL, который требует некоторых параметров. Значения этих параметров могут быть акцентированными символами,поэтому мне абсолютно необходимо UrlEncode их. Странно, но я вижу разницу между поведением или Javascript и. NET. Давайте представим, что я пытаюсь UrlEncode слово éléphant. В.
У меня есть эта строка для кодирования (с разрывом строки) Идентификатор отправителя Идентификатор отправителя Отправитель ID При использовании этого генератора urlencode я получаю желаемый результат, который Sender%20ID%0ASender%20ID%0ASender%20ID Однако, когда я использую php urlencode(), я.
Использование: var encoded = encodeURIComponent(str);
Вы можете найти ссылку здесь:
Взгляните на phpjs.org, если вы ищете функцию JS, эквивалентную PHP:
Здесь вы можете использовать encodeURIComponent() (с некоторыми изменениями).
В нижней части этой страницы приведен фрагмент кода, который выглядит следующим образом:
Я немного корректирую предоставленный фрагмент javascript, чтобы включить еще пару символов.
Кодированные Выходные Данные:
В PHP, когда url кодируется с использованием urlencode(), выводимые символы находятся в верхнем регистре: echo urlencode(‘MyString’.chr(31)); //returns ‘MyString%1F’ Мне нужно получить PHP, чтобы вернуть мне ‘MyString%1f’ для приведенного выше примера, но не для того, чтобы понизить регистр любой.
Похожие вопросы:
Я новичок в программировании php, поэтому, пожалуйста, наберитесь терпения. У меня есть немного кода, который делает while loop Через от 0 до 9, который предоставляет ссылку на страницу и добавляет.
У меня есть URL, который требует некоторых параметров. Значения этих параметров могут быть акцентированными символами,поэтому мне абсолютно необходимо UrlEncode их. Странно, но я вижу разницу между.
У меня есть эта строка для кодирования (с разрывом строки) Идентификатор отправителя Идентификатор отправителя Отправитель ID При использовании этого генератора urlencode я получаю желаемый.
В PHP, когда url кодируется с использованием urlencode(), выводимые символы находятся в верхнем регистре: echo urlencode(‘MyString’.chr(31)); //returns ‘MyString%1F’ Мне нужно получить PHP, чтобы.
Да здравствует Regex! В PHP г.: От этого: urlencode($row_rs_details[‘Title’],ENT_QUOTES, ‘utf-8’); и еще несколько сотен, где имена переменных разные, мне нужно удалить, ENT_QUOTES, ‘utf-8’ и просто.
Когда я использую urlencode() в одной и той же строке, содержащей специальные символы в PHP7 и PHP 5.3.10, результаты получаются разными. Что я пробовал: urlencode(‘Testör’) Выход в PHP7.
Я пытаюсь подключить twilio api с помощью Curl php. Ниже приведен код от Twilio api Я использовал онлайн-инструмент php в curl, но он не преобразовал код с помощью Data encode url. Вопрос, который.
urlencode
(PHP 4, PHP 5, PHP 7, PHP 8)
urlencode — URL-кодирование строки
Описание
Эта функция удобна, когда закодированная строка будет использоваться в запросе, как часть URL, в качестве удобного способа передачи переменных на следующую страницу.
Список параметров
Строка, которая должна быть закодирована.
Возвращаемые значения
Примеры
Пример #1 Пример использования urlencode()
Пример #2 Пример использования urlencode() и htmlentities()
Примечания
Будьте внимательны с переменными, которые могут совпадать с элементами HTML. Такие сущности как &, © и £ разбираются браузером и используется как реальная сущность, а не желаемое имя переменной. Это очевидный конфликт, на который W3C указывает в течение многих лет. Смотрите подробности: » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2
Смотрите также
User Contributed Notes 25 notes
urlencode function and rawurlencode are mostly based on RFC 1738.
However, since 2005 the current RFC in use for URIs standard is RFC 3986.
Here is a function to encode URLs according to RFC 3986.
I needed encoding and decoding for UTF8 urls, I came up with these very simple fuctions. Hope this helps!
Don’t use urlencode() or urldecode() if the text includes an email address, as it destroys the «+» character, a perfectly valid email address character.
Unless you’re certain that you won’t be encoding email addresses AND you need the readability provided by the non-standard «+» usage, instead always use use rawurlencode() or rawurldecode().
I needed a function in PHP to do the same job as the complete escape function in Javascript. It took me some time not to find it. But findaly I decided to write my own code. So just to save time:
urlencode is useful when using certain URL shortener services.
The returned URL from the shortener may be truncated if not encoded. Ensure the URL is encoded before passing it to a shortener.
(tilde), while urlencode does.
Below is our jsonform source code in mongo db which consists a lot of double quotes. we are able to pass this source code to the ajax form submit function by using php urlencode :
If you want to pass a url with parameters as a value IN a url AND through a javascript function, such as.
. pass the url value through the PHP urlencode() function twice, like this.
However, some weird things happen when dealing with characters like (these are HTML entities): ‼ ▐ ┐and Θ have weird things going on.
If you try to pass one in Internet Explorer, IE will *disable* the submit button. Firefox, however, does something weirder: it will convert it to it’s HTML entity. It will display properly, but only when you don’t convert entities.
The point? Be careful with decorative characters.
This very simple function makes an valid parameters part of an URL, to me it looks like several of the other versions here are decoding wrongly as they do not convert & seperating the variables into &.
$vars=array(‘name’ => ‘tore’,’action’ => ‘sell&buy’);
echo MakeRequestUrl($vars);
Will output: action=sell%26buy&name=tore
Constructing hyperlinks safely HOW-TO:
= ‘machine/generated/part’ ;
$url_parameter1 = ‘this is a string’ ;
$url_parameter2 = ‘special/weird «$characters»‘ ;
$link_label = «Click here & you’ll be » ;
Shortly:
— Use urlencode for all GET parameters (things that come after each «=»).
— Use rawurlencode for parts that come before «?».
— Use htmlspecialchars for HTML tag parameters and HTML text content.
look on index.php
array (size=0)
empty
test-bla-bla-4%253E2-y-3%253C6
look on test-bla-bla-4%253E2-y-3%253C6
array (size=1)
‘token’ => string ‘bla-bla-4>2-y-3
Simple static class for array URL encoding
/**
*
* URL Encoding class
* Use : urlencode_array::go() as function
*
*/
class urlencode_array
<
Encode URL in JavaScript?
How do you safely encode a URL using JavaScript such that it can be put into a GET string?
I assume that you need to encode the myUrl variable on that second line?
21 Answers 21
Check out the built-in function encodeURIComponent(str) and encodeURI(str).
In your case, this should work:
You have three options:
escape() will not encode: @*/+
encodeURI() will not encode:
encodeURIComponent() will not encode:
The best answer is to use encodeURIComponent on values in the query string (and nowhere else).
However, I find that many APIs want to replace » » with «+» so I’ve had to use the following:
And as @Jochem points out below, you may want to use encodeURIComponent() on a (each) folder name, but for whatever reason these APIs don’t seem to want + in folder names so plain old encodeURIComponent works great.
I would suggest to use qs npm package
it is easier to use with JS object and it gives you proper URL encoding for all parameters
encodeURIComponent() is the way to go.
BUT you should keep in mind that there are small differences from php version urlencode() and as @CMS mentioned, it will not encode every char. Guys at http://phpjs.org/functions/urlencode/ made js equivalent to phpencode() :
To encode a URL, as has been said before, you have two functions:
The reason both exist is that the first preserves the URL with the risk of leaving too many things unescaped, while the second encodes everything needed.
With the first, you could copy the newly escaped URL into address bar (for example) and it would work. However your unescaped ‘&’s would interfere with field delimiters, the ‘=’s would interfere with field names and values, and the ‘+’s would look like spaces. But for simple data when you want to preserve the URL nature of what you are escaping, this works.
The second is everything you need to do to make sure nothing in your string interfers with a URL. It leaves various unimportant characters unescaped so that the URL remains as human readable as possible without interference. A URL encoded this way will no longer work as a URL without unescaping it.
Кодировать URL в JavaScript?
Как безопасно кодировать URL-адрес с помощью JavaScript, чтобы его можно было поместить в строку GET?
Я предполагаю, что вам нужно кодировать myUrl переменная на этой второй строке?
13 ответов
у вас есть три варианта:
escape() не будет кодировать: @*/+
encodeURI() не будет кодировать:
encodeURIComponent() не будет кодировать:
лично я считаю, что многие API хотят заменить «»на»+», Поэтому я использую следующее:
Примечание: вы используете encodeURIComponent для значения на строку запроса (не поля/значение имена и, безусловно,не весь URL). Если вы сделаете это по-другому, он не будет кодировать символы, такие как=. &, возможно, оставляя строку запроса открытой.
для кодирования URL-адреса, как было сказано ранее, у вас есть две функции:
причина существования обоих заключается в том, что первый сохраняет URL-адрес с риском оставить слишком много вещей без эскапады, в то время как второй кодирует все необходимое.
С первым, вы можете скопировать недавно экранированный URL в адресную строку (например), и это будет работать. Однако ваши unescaped ‘ & ‘ будут мешать разделителям полей, ‘= ‘ S будет вмешайтесь в имена полей и значения, и ‘+’будут выглядеть как пробелы. Но для простых данных, когда вы хотите сохранить URL-адрес того, что вы избегаете, это работает.
второй-это все, что вам нужно сделать, чтобы убедиться, что ничто в вашей строке не мешает URL-адресу. Он оставляет различные неважные символы без эскапады, так что URL-адрес остается максимально читаемым человеком без вмешательства. URL-адрес, закодированных таким образом, не будет работать в качестве URL-адреса без снятия он.
urlencode против rawurlencode?
каковы именно различия и какие предпочтительнее?
11 ответов
это будет зависеть от вашей цели. Если совместимость с другими системами важна, то кажется, что rawurlencode-это путь. Единственным исключением являются устаревшие системы, которые ожидают, что строка запроса будет следовать стилю кодирования форм пробелов, закодированных как + вместо %20 (в этом случае вам нужен urlencode).
rawurlencode следует за RFC 1738 до PHP 5.3.0 и RFC 3986 после этого (см. http://us2.php.net/manual/en/function.rawurlencode.php)
были заменены знаком процента ( % ), за которым следуют две шестнадцатеричные цифры. Это кодировка, описанная в » RFC 3986 для защиты буквальных символов от интерпретации в качестве специальных разделителей URL-адресов и для защиты URL-адресов от искажения средствами передачи с преобразованием символов (например, некоторыми системами электронной почты).
примечание по RFC 3986 против 1738. rawurlencode до php 5.3 закодировал символ тильды (
) согласно RFC 1738. Однако с PHP 5.3 rawurlencode следует RFC 3986, который не требует кодирования символов Тильды.
urlencode кодирует пробелы как знаки плюса (не как %20 как сделано в rawurlencode) (см.http://us2.php.net/manual/en/function.urlencode.php)
это соответствует определению для application/x-www-form-urlencoded in RFC 1866.
Дополнительная Информация:
Как видите, + является зарезервированным символом в строке запроса и, следовательно, должен быть закодирован согласно RFC 3986 (как в rawurlencode).
доказательство находится в исходном коде PHP.
я проведу вас через быстрый процесс, как узнать такие вещи самостоятельно в будущем в любое время, когда вы хотите. Потерпите со мной, будет много исходного кода C, который вы можете просмотреть (я объясняю это). если вы хотите освежить некоторые C, хорошим местом для начала является наша so wiki.
загрузите источник (или используйте http://lxr.php.net/ чтобы просмотреть его онлайн), grep все файлы для имя функции, вы найдете что-то вроде этого:
PHP 5.3.6 (самый последний на момент написания) описывает две функции в их собственном коде C в файле URL-адрес.c.
RawUrlEncode()
UrlEncode ()
хорошо, так что здесь изменилось?
они оба по существу вызывают две разные внутренние функции соответственно: php_raw_url_encode и php_url_encode
так что идите искать эти функции!
давайте посмотрим на php_raw_url_encode
и конечно, php_url_encode:
обе эти функции управляют EBCDIC, если веб-сервер определил его.
кроме того, они оба используют массив символов (думаю типа String) hexchars look-up чтобы получить некоторые значения, массив описывается следующим образом:
помимо этого, функции действительно разные, и я собираюсь объяснить их в ASCII и EBCDIC.
различия в ASCII:
URLENCODE:
RAWURLENCODE:
отличия:
они в основном повторяются по-разному, один назначает знак + в случае ASCII 20.
различия в EBCDIC:
URLENCODE:
RAWURLENCODE:
Большой Резюме
отказ от ответственности: я не прикасался к C годами, и я не смотрел на EBCDIC действительно очень долгое время. Если я где-то ошибаюсь, дай мне знать.
предлагаемые реализации
основываясь на всем этом, rawurlencode-это способ идти большую часть времени. Как и ты увидеть в ответ Джонатан Fingland, и придерживаться его в большинстве случаев. Он имеет дело с современной схемой для компонентов URI, где как urlencode делает вещи старой школы, где + означает «пространство».»
если вы пытаетесь конвертировать между старым форматом и новыми форматами, убедитесь, что ваш код не ошибается и не превращает что-то, что является декодированным знаком+, в пространство случайно двойным кодированием или аналогичными сценариями «oops» вокруг этого пространства/20%/+.
если вы работая над старой системой со старым программным обеспечением, которое не предпочитает новый формат, придерживайтесь urlencode, однако я считаю, что %20 будет действительно обратно совместим, так как в соответствии со старым стандартом %20 работал, просто не был предпочтительным. Дайте ему шанс, если вы готовы играть вокруг, дайте нам знать, как это сработало для вас.
в основном, вы должны придерживаться raw, если ваша система EBCDIC действительно ненавидит вас. Большинство программистов никогда не столкнутся с EBCDIC на любой системе, сделанной после года 2000, может быть, даже 1990 (это толкает, но все еще вероятно, на мой взгляд).