Вопрос № 98687: есть ip-адреса. 81.20.98.167 принадлежит одному городу, 87.237.115.13 - другому. и есть форма, в которой поле "город". как сделать, чтобы при совпадении ip заданного (87.237.115.13) и текущего ($REMOTE_ADDR) в поле ГОРОД отображалось 'Санкт...Вопрос № 98716: Уважаемые эксперты, как бы мне реализовать следующее:
Дана строка символов, напр. $s='привет, hello'.
Как бы получить из нее 2 переменные: с количеством русских букв и с количеством латинских?...
Вопрос № 98.687
есть ip-адреса. 81.20.98.167 принадлежит одному городу, 87.237.115.13 - другому. и есть форма, в которой поле "город". как сделать, чтобы при совпадении ip заданного (87.237.115.13) и текущего ($REMOTE_ADDR) в поле ГОРОД отображалось 'Санкт-Петербург'?
[ответ предпочтительнее на e-mail kol_mat@mail.ru]
пробовал так (см приложение), получилось только с последним вариантом, и то косо:
Приложение:
Отправлен: 17.08.2007, 02:19
Вопрос задал: nikemat (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Емельянов Данил Юрьевич
Здравствуйте, nikemat!
Здесь все зависит от того, где вы храните ip-адреса. Предлагаю использовать MySql базу данных. Создаете таблицу(ip_table) с полями (id,ip,city и т.д.) и делаете SQL-запрос.
$result=mysql_result("SELECT `city` FROM ip_table WHERE `ip`='".$_SERVER["REMOTE_ADDR"]."'",0);
//в переменной result будет храниться город.
Повторяю, вы не указали, где храните ip адреса, я просто привел пример с MySql БД. Возможно также использование XML.
--------- Жить хорошо, а хорошо жить еще лучше!
Отвечает: Flynn
Здравствуйте, nikemat!
Стоит замерить что в одном городе может быть много айпи адресов, так как провайдерым их выдается какой-то диапазон, так что если уж и сравнивать, то скорее всего первые три цифры.
Так же я бы не советовал определять имя пользователя админа только по айпишнику. Если он у вас постоянный - да, можете ввести это как проверку, он оставлять только её одну не стоит, так как все что передает браузер серверу можно подделать.
первый вариант проверки - через switch.
Вариант второй - хранить информацию в бд. Предположим три поля - id, ip, city. Тогда получаем все айпишники что в БД, заносим их в массив и выбираем из массива нужный нам элемент.
Приложение:
Ответ отправил: Flynn (статус: 4-ый класс)
Ответ отправлен: 17.08.2007, 08:50
Вопрос № 98.716
Уважаемые эксперты, как бы мне реализовать следующее:
Дана строка символов, напр. $s='привет, hello'.
Как бы получить из нее 2 переменные: с количеством русских букв и с количеством латинских?
Отправлен: 17.08.2007, 11:11
Вопрос задал: Lxx (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Santana
Здравствуйте, Lxx!
с первым проблем нет ...
list($s1, $s2) = explode(",", $is);
или так
list($s_array[]) = explode(",", $is);
и будет у тебя массив слов
со вторым дело сложнее ... вкратце ... перебираешь все буквы строки, определяешь латынь или кирилица и считаешь
Ответ отправил: Santana (статус: 9-ый класс)
Ответ отправлен: 17.08.2007, 11:49 Оценка за ответ: 3 Комментарий оценки: Вы меня не совсем поняли. Я как раз и хотел бы узнать, как различать латинские и кирилические символы...
Отвечает: Gines
Здравствуйте, Lxx!
Предлагаю такой вариант: просматриваете каждый символ и проверяете, является ли он русской буквой, иначе, является ли он латинской буквой, что делать с пробелами, точками, запятыми и т.п. решайте сами. Вот код:
<?php
$s='привет, hello';
$c=strlen($s);
$count_eng=0;
$count_rus=0;
for($i=0;$i<$c;$i++)
if(ord($s[$i])>64 && ord($s[$i])<123)
$count_eng++;
elseif((ord($s[$i])>191 && ord($s[$i])<256) || ord($s[$i])==168 || ord($s[$i])==184)
$count_rus++;
else
;//здесь обрабатывайте знаки (точки, пробелы, запятые и т.д.)
echo "Количество английских букв: $count_eng<br>";
echo "Количество русских букв: $count_rus";
?>
//функция ord() определяет ASCII код символа, по которому можно судить о его принадлежности,
//обратите внимание на код буквы "ё", он выпадает из общего диапазона
Ответ отправил: Gines (статус: 4-ый класс)
Ответ отправлен: 17.08.2007, 19:39 Оценка за ответ: 5 Комментарий оценки: уже сам разобрался при помощи preg_match_all, но все-равно спасибо!
Отвечает: Kruphi
Здравствуйте, Lxx!
Вот работающий вариант основанные на посимвольном просмотре строки и сравнения этого символа со строками шаблонов:
<?php
$lat = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$rus_win1251 = 'абвгдеёжзийклмнопрстуфчцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФЧЦЧШЩЪЫЬЭЮЯ';
$rus_koi8r = 'БВЧЗДЕ_ЦЪЙКЛМНОПРТУФХЖЮГЮЫЭЯЩШЬАСбвчзде_цъйклмнопртуфхжюгюыэящшьас';