Почему rawurlencode () в PHP добавляет дополнительные экранирующие символы в амперсанды? - PullRequest
1 голос
/ 04 марта 2011

Я думаю, что мне здесь не хватает чего-то очевидного, но это сводит меня с ума, и я не могу понять это.Я разрабатываю плагин для WordPress, и часть его должна взять заголовок поста WordPress и отправить его в веб-сервис RESTful, чтобы заняться чем-то другим.Поэтому, конечно, я хочу использовать rawurlencode () заголовок поста, так как кто знает, какой текст там может быть.Однако по какой-то причине вывод, который я получаю, содержит дополнительные управляющие символы, и я понятия не имею, откуда они берутся (и это вызывает проблемы с веб-службой, которую я вызываю).

Мой коддовольно просто:

$topic = get_the_title($post_id);
$curl_post_fields = 'name=' . rawurlencode( $topic );  

Тем не менее, когда я печатаю вывод этих двух строк, я получаю:

topic=a & b
name=a%20%26%23038%3B%20b

В то время как я ожидал бы, что закодированная строка URL будет

name=a%20%26%20b

Я понятия не имею, откуда может взяться этот дополнительный% 23038% 3B.Если я правильно читаю кодировку, это переводится как # 038;но я до сих пор не знаю, откуда он.

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Кажется, что между ними также есть html-кодировка, вместо &, & находится в закодированной строке.Возможно, потому что & должно быть экранировано в html, а функция get_title избегает этого, используя html_special_chars или что-то в этом роде.

0 голосов
/ 04 марта 2011

У меня были некоторые проблемы с этим, когда я использовал более старую версию PHP

...