Ограничить аргумент запроса максимальной длинойPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Ограничить аргумент запроса максимальной длиной

Сообщение Anonymous »

У меня есть форма, в которой пользователь может ввести строку в текстовую область. Эта строка затем будет использоваться в качестве аргумента запроса при вызове API внешней службы.
Служба имеет ограничение на длину этого конкретного аргумента; оно не может превышать 512 символов и должно быть закодировано по URL.
Хотя я могу установить максимальную длину для текстового поля равным 512, это все равно приведет к тому, что аргумент запроса при кодировании превысит максимальное значение. длину, поскольку любой пробел будет закодирован как %20 и так далее.
В настоящее время я делаю следующее:

Код: Выделить всё

// 512 character long search text given by user.
$dummySearchString = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tincidunt, nunc a consequat luctus, eros leo interdum nisl, vel convallis felis sapien eu nisl. Fusce ut viverra libero. Mauris non nulla sed elit varius volutpat. Sed in malesuada lacus. Nullam vel odio sagittis, ullamcorper mauris vel, scelerisque odio. Aliquam erat volutpat. Sed ut facilisis sapien, a rutrum sapien. Proin nec urna at ante egestas luctus sed in eros. Fusce accumsan odio sed ornare posuere. Ut consectetur arcu sed bibendum pretium. Integer tristique orci eget velit dictum, eu tristique justo aliquet. Praesent finibus egestas enim, vulputate varius tortor consequat id.';

// Encode the string, we first trim of any blank spaces from start and end.
$encodedQueryString = rawurlencode(trim($dummySearchString));

// Check the length and trim if exceeding 512 characters.
$encodedQueryString = substr($encodedString, 0, 512);

// Make http request.
$response = $this->client->request('GET', 'https://example.com/api/v1/search', [
'query' => [
'q' => rawurldecode($encodedQueryString),
],
]);
Вышеописанное работает в большинстве случаев, но все равно могут возникнуть проблемы с обрезкой в ​​середине объекта и т. д.
Что будет лучшее решение, чтобы убедиться, что текст, введенный в текстовую область, можно будет использовать в качестве аргумента запроса в этом случае?

Подробнее здесь: https://stackoverflow.com/questions/788 ... mum-length
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»