function GetRank($nickname)
{
$xmlobj = simplexml_load_string(file_get_contents("http://www.timezero.ru/info.pl?userxml=".$nickname.""));
$rank = $xmlobj->attributes()->rank_points[0];
$prof = $xmlobj->attributes()->pro[0];
if(($rank >= 0) & ($rank < 20)) //рядовой
$rank_num = 1;
if(($rank >= 20) & ($rank < 60)) //младший сержант
$rank_num = 2;
if(($rank >= 60) & ($rank < 120)) //сержант
$rank_num = 3;
if(($rank >= 120) & ($rank < 250)) //старший сержант
$rank_num = 4;
if(($rank >= 250) & ($rank < 600)) //мл. лейтенант
$rank_num = 5;
if(($rank >= 600) & ($rank < 1100)) //лейтенант
$rank_num = 6;
if(($rank >= 1100) & ($rank < 1800)) //ст.лейтенант
$rank_num = 7;
if(($rank >= 1800) & ($rank < 2500)) //капитан
$rank_num = 8;
if(($rank >= 2500) & ($rank < 3200)) //майор
$rank_num = 9;
if(($rank >= 3200) & ($rank < 4000)) //подполковник
$rank_num = 10;
if(($rank >= 4000) & ($rank < 5000)) //полковник
$rank_num = 11;
if(($rank >= 5000) & ($rank < 6000)) //генерал-майор
$rank_num = 12;
if(($rank >= 6000) & ($rank < 7200)) //генерал-лейтенант
$rank_num = 13;
if(($rank >= 7200) & ($rank < 10000)) //генерал-полковник
$rank_num = 14;
if(($rank >= 10000) & ($rank < 15000)) //маршал
$rank_num = 15;
if(($rank >= 15000)) //командор
$rank_num = 16;
//if(isset($prof))
echo "<img src=\"img\\prof\\".$prof.".gif\">";
//echo $prof;
//if(isset($rank_num))
echo "<img src=\"img\\rank\\".$rank_num.".gif\">";
//echo $rank;
}
Вообщем, если в $nickname русские символы или есть пробел(даже в англоязычном никнейме) - то не работает. Пытался кодировать и utf8_encode, и urlencode, iconv - не работает. $nickname черпается из БД, там кодировка utf8.
Как это исправить?
Спустя 1 час, 13 минут, 45 секунд (31.10.2010 - 21:56) kirik написал(а):
а что за скипт по тому адресу? Может быть просто этот скрипт не работает с русскими буквами?
ЗЫ. Я для своего форума как-то функцию-раковалку писал:
Удобнее чем куча if-ов
ЗЫ. Я для своего форума как-то функцию-раковалку писал:
function returnRank($rank)
{
$ranking = array(
0 => 1, // рядовой
20 => 2, //младший сержант
60 => 3, //сержант
120 => 4, //старший сержант
250 => 5, //мл. лейтенант
600 => 6, //лейтенант
1100 => 7, //ст.лейтенант
1800 => 8, //капитан
2500 => 9, //майор
3200 => 10, //подполковник
4000 => 11, //полковник
5000 => 12, //генерал-майор
6000 => 13, //генерал-лейтенант
7200 => 14, //генерал-полковник
10000 => 15, //маршал
15000 => 16 //командор
);
$ranking[$rank . '_'] = 'my';
krsort($ranking);
while($rank = each($ranking)) {
if($rank['value'] == 'my') {
return current($ranking);
}
}
}
echo returnRank(19); // 1 - рядовой
echo returnRank(1800); // 8 - капитан
Удобнее чем куча if-ов
Спустя 13 минут, 21 секунда (31.10.2010 - 22:09) Отторжение написал(а):
kirik, спасибо за сокращение условий)
http://www.timezero.ru/manual/api.ru.html
вот инфа по запросам. Есть другой ресурс, который тоже получает данные из xml файла - но там всё нормально. Просто вот брал никнейм "АнархиЯ" и пытался перекодировать его в формат UTF-8, никакого результата - одни корявки. Уже начинает злить >_<
http://www.timezero.ru/manual/api.ru.html
вот инфа по запросам. Есть другой ресурс, который тоже получает данные из xml файла - но там всё нормально. Просто вот брал никнейм "АнархиЯ" и пытался перекодировать его в формат UTF-8, никакого результата - одни корявки. Уже начинает злить >_<
Спустя 6 минут, 51 секунда (31.10.2010 - 22:16) kirik написал(а):
Отторжение
А в скрипте работает тестовая ссылка? _www.timezero.ru/info.pl?userxml=имя_персонажа
UPD У меня выдает:
А в скрипте работает тестовая ссылка? _www.timezero.ru/info.pl?userxml=имя_персонажа
UPD У меня выдает:
<USER login="Имя_персонажа" psy="" int="6" str="6" dex="5" regday="13.02.2010" acc="1" stamina="100" pow="9" level="2" man="1" siluet="type=3,body=1,body2=1,head=4,rgb=25,hair=23" maxPsy="30" maxHP="40" HP="40">
<O name="ba1-b1" up="pow=1" txt="Boots" slot="B"/>
<O name="ba1-t1" txt="Jeans" slot="A"/>
<O name="ba1-c2" txt="Jeans vest" slot="CDE"/>
<O name="b1-p4" txt="Ingram" slot="G"/>
</USER>
Спустя 3 минуты, 14 секунд (31.10.2010 - 22:20) Отторжение написал(а):
kirik да нет, url выходит 100% правильный с существующим именем персонажа. Если просто вывести URL то получается: http://www.timezero.ru/info.pl?userxml=АнархиЯ
Вся загвоздка в кодировке и хз как её поправить.
Вся загвоздка в кодировке и хз как её поправить.
Спустя 17 минут, 1 секунда (31.10.2010 - 22:37) kirik написал(а):
А сам php файл в utf8?
Спустя 1 минута, 41 секунда (31.10.2010 - 22:38) Отторжение написал(а):
kirik, Вы о <meta http-equiv="content-type" content="text/html;charset=utf-8" /> ?
У меня функция GetRank() вызывается в php файле, в нём html код и указана кодировка utf-8 как я написал выше.
У меня функция GetRank() вызывается в php файле, в нём html код и указана кодировка utf-8 как я написал выше.
Спустя 3 часа, 13 минут, 27 секунд (1.11.2010 - 01:52) kirik написал(а):
Отторжение
Не, я не о мета-тэге. Я о кодировке самого файла. В настройках редактора/IDE можно посмотреть в какой он кодировке.
Не, я не о мета-тэге. Я о кодировке самого файла. В настройках редактора/IDE можно посмотреть в какой он кодировке.
Спустя 2 минуты, 52 секунды (1.11.2010 - 01:55) Отторжение написал(а):
Ну написано что UTF-8. Да кодировка самого скрипта тут не при чём =/
Спустя 34 минуты, 21 секунда (1.11.2010 - 02:29) kirik написал(а):
Цитата (Отторжение @ 31.10.2010 - 17:55) |
Да кодировка самого скрипта тут не при чём =/ |
Бывает что причем.
А кодировку соединения с БД устанавливаешь?
Пример:
mysql_set_charset('utf8', $db); // Read http://php.net/mysql_set_charset for more info
mysql_query('SET character_set_server = utf8', $db);
Спустя 51 минута, 56 секунд (1.11.2010 - 03:21) Отторжение написал(а):
Да да да, конечно устанавливаю кодировку. Вот кусок кода где используется моя функция:
<?
mysql_query("SET NAMES 'utf8'");
$query = mysql_query("SELECT * FROM `badlist` $filter LIMIT ".(($page - 1)*$num_inlist).",".$num_inlist."") or die(mysql_error());
while($row = mysql_fetch_assoc($query))
{
?>
<tr>
<td><a href="http://www.timezero.ru/info.pl?<? echo $row['nickname'] ?>"><? echo $row['nickname'] ?></a>
<? GetRank($row['nickname']); ?></td>
<td><? echo $row['clan'] ?></td>
<td><a href="http://www.timezero.ru/sbtl.ru.html?<? echo $row['log'] ?>"><? echo $row['log'] ?></a></td>
<td><? echo $row['etc'] ?></td>
<td><? echo $row['exit'] ?></td>
<?
if($auth == true)
echo "<td><a href=\"?id_remove=".$row['id']."\">Удалить</a></td>";
?>
Спустя 2 дня, 17 часов, 25 минут, 34 секунды (3.11.2010 - 20:46) Отторжение написал(а):
По прежнему вопрос актуален.