Кодирование русских букв в URL на PHP

12
EO
На сайте с 10.05.2005
Offline
114
#11
Ladycharm:
Там и будет пара строк:

$s='http://programma-biserok.ru/СКРИНШОТЫ/Схема целиком.png';
$url = parse_url($s);
$arr = explode('/', $url{'path'}); // {} ЗАМЕНИТЬ на квадратные скобки, грёбаный парсер форума!!!
$coded = array_map('rawurlencode', $arr); // Обработать массив функцией rawurlencode
$restored = 'http://'.$url{'host'} // {} ЗАМЕНИТЬ на квадратные скобки, грёбаный парсер форума!!!
.implode('/', $coded); // Собрать перекодированный url обратно
# $restored = str_replace('%23', '#', $$restored); // Ибо rawurlencode заменяет якорь '#' на ''%23'
Более интересный вопрос - а где вы берёте эти url с русскими буквами? По RFC их не должно быть в url, те у вас что-то неправильно.
А вы ещё и перекодируете их с cp1251 в utf8, тогда как "русские" url должны быть сразу в utf8, иначе браузер не покажет их русскими буквами.


PS: Для IDN-доменов придётся заюзать функцию по-сложнее, но, опять, же, если брать доменное имя в "правильном месте" - оно должно быть сразу в пуникоде. Русскими буквами браузер только ОТОБРАЖАЕТ пуникод в адресной строке, а на самом деле там содержится xn-абракадабра.

Спасибо, попробую это решение.

Ссылки могут быть любыми, с разными доменами, папками, именами файлов, у меня каталог программ, программы добавляют авторы, программ более 10 тыс., так что могут быть любые варианты...

Ссылки сохраняются в базу как их добавляют авторы, движок сайта 2003 года, тогда мне и не попадалось никаких ссылок с русскими буквами...

Бооольшой портал о мааалом бизнесе (http://www.bizguru.ru/) | Более 1000 бизнес-программ (http://1.44mb.ru) По выходным не работаю - не ищите меня в сети. В понедельник я обычно сам возвращаюсь :)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий