И снова о кодировках и mod_rewrite()
Добился я значит ЧПУ. Возникла теперь такая проблемка. В скрипте из базы выбираются сообщения, тема и обратный адрес отправителя. Скрипт генерит из них ссылки видa
[Error: Irreparable invalid markup ('<a […] name'].".html'>') in entry. Owner must fix manually. Raw contents below.]
Добился я значит ЧПУ. Возникла теперь такая проблемка. В скрипте из базы выбираются сообщения, тема и обратный адрес отправителя. Скрипт генерит из них ссылки видa
<code>
<a href='messages/".$message['name'].".html'>".$message['name']."</a>
</code>
modrewrite перебивает ссылку так:
<code>
RewriteRule ^messages/([A-z0–9]+)/([0-9]+)\.html$ newmessage.php?id=$2&name=$1
</code>
В viewmessage.php по $_GET['name'] происходит выборка всех сообщений пользователя с указанным именем. Все работает прекрасно, если в имени пользователя нет кириллицы. Все написано под UTF-8, мускулу тоже задана дефолтная кодировка UTF-8, и при соединении с базой "SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'" посылается.
Как я понимаю, нужно написать функцию - перекодировщик из транслита в кириллицу и наоборот, и ей обрабатывать запросы к базе, как при добавлении, так и при выборке. Или есть менее проктологический вариант решения? Подскажите тогда.
UPD. Спасибо, решилось добавлением А-я в реврайтовое правило. Но испытания по букве "ш" и "И" провалились.
<code>
<a href='messages/".$message['name'].".html'>".$message['name']."</a>
</code>
modrewrite перебивает ссылку так:
<code>
RewriteRule ^messages/([A-z0–9]+)/([0-9]+)\.html$ newmessage.php?id=$2&name=$1
</code>
В viewmessage.php по $_GET['name'] происходит выборка всех сообщений пользователя с указанным именем. Все работает прекрасно, если в имени пользователя нет кириллицы. Все написано под UTF-8, мускулу тоже задана дефолтная кодировка UTF-8, и при соединении с базой "SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'" посылается.
Как я понимаю, нужно написать функцию - перекодировщик из транслита в кириллицу и наоборот, и ей обрабатывать запросы к базе, как при добавлении, так и при выборке. Или есть менее проктологический вариант решения? Подскажите тогда.
UPD. Спасибо, решилось добавлением А-я в реврайтовое правило. Но испытания по букве "ш" и "И" провалились.
Комментариев нет
Комментариев нет.
Извините, комментирование на данный момент закрыто.