В своем коде я создаю такую ссылку:
$link = 'http://www.mydomain.com/'.urlencode($str).'/1';
Я использую переписывание URL, и правило в моем файле htaccess выглядит так:
rewriteRule ^(.+)/(.*)$ index.php?var1=$1&var2=$2 [NC,L]
Этот код отлично работает практически для всех строк. Но иногда строка для кодирования содержит «&». Функция urlencode кодирует его в основном, но когда я читаю массив $ _GET в php, он выглядит так (с $ str = 'substring1 & substring2'):
'var1' => 'substring1' (without "&")
'substring2' => '' (without "&")
'var2' => 1
Мне действительно нужно "&" в моей переменной. Есть ли способ закодировать этот символ, чтобы он работал?
Кроме того, я действительно не знаю, почему, но иногда я получаю запрещенную ошибку http с некоторыми строками, переданными как var1. Видимо, в них нет ничего особенного, например, «Площадь Декари» допускает эту ошибку. Другие строки с пробелами и "é" работают нормально.