2016-01-27 2 views
0

На моем сайте пользователь может ввести текст в поле «Описание». Я могу получить любой текст, который был введен, выполнив запрос и вернув его как $description. В конечном итоге я хочу использовать эту информацию для создания URL-адреса. Я сталкиваюсь с проблемами, если пользователь вводит «,» в части текста. Например, допустим, пользователь ввел "test description, test description".«comma» и urlencoding PHP

$description вернется, как: "test%20description,%20test%20description"

Запуск urlencode($description) результаты: "test+description%2C+test+description"

Это нормально для "test+description" части, но не в %2C. В конце концов, что я спрашиваю, как я могу вместо этого вернуться: "test+description,+test+description"

+1

Это не очень понятно. Как вы думаете, что делает 'urlencode()', и почему вы думаете, что он должен оставить запятую в одиночку? –

+0

запятая должна быть закодирована в URL-адресе - так что в чем проблема? –

+0

Почему это проблема, что она закодирована? Сервер, который получает URL-адрес, должен декодировать URL-адрес, поэтому он получит оригинальную запятую. – Barmar

ответ

1

Ну, UrlEncode кодирует запятых как% 2C в шестнадцатеричной системе счисления, и это то, что вы не можете изменить: http://www.obkb.com/dcljr/charstxt.html

Если вы не» t хочу, чтобы эта запятая была закодирована. Я думаю, вы должны кодировать все, кроме запятых:

str_replace('%2C', ',', urlencode($description)); 
+0

да, но запятые не должны быть в URL-адресе согласно разделу 2.3 RFC 3986: * «Символы, разрешенные в URI, но не имеющие зарезервированной цели, называются безоговорочными. Это включают в себя прописные и строчные буквы, десятичные цифры , дефис, период, символ подчеркивания и тильда. * –

+0

Вы совершенно правы, но, возможно, ему нужно это для каких-то дополнительных целей, прежде чем создавать окончательный URL-адрес. – subzeta

 Смежные вопросы

  • Нет связанных вопросов^_^