Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сокеты, не прочитать русский язык.
 
 автор: Бамси   (27.10.2007 в 20:37)   письмо автору
 
 

Я посылаю сокет, мол GET /index.php
Мне приходит страница, но вместо русского там типо ^^^^ это видит скрипт, в браузере нормально, поэтому он не может найти в тексте русский символы.

   
 
 автор: Саня   (27.10.2007 в 21:16)   письмо автору
 
   для: Бамси   (27.10.2007 в 20:37)
 

А заголовки какие приходят?

   
 
 автор: Бамси   (27.10.2007 в 21:56)   письмо автору
 
   для: Бамси   (27.10.2007 в 20:37)
 


<?php
$hostname 
"yandex.ru";
$fp fsockopen($hostname80$errno$errstr30);
  
 
$headers "GET /login.php HTTP/1.1\r\n";   
 
$headers .= "Host: $hostname\r\n";  
 
$headers .= "Connection: Keep-Alive\r\n\r\n";
 
 
fwrite($fp$headers);
 while (!
feof($fp)) $text .= fgets($fp1024); 
 
fclose($fp);
 
if(
strpos($text,'Новости')) echo '1';
else echo 
'0';
?>


Выводит 0.

   
 
 автор: Саня   (27.10.2007 в 22:05)   письмо автору
 
   для: Бамси   (27.10.2007 в 21:56)
 

Интересно, откуда у яндекса взялся скрипт login.php в корне? http://www.yandex.ru/login.php даёт 404 Not Found. Вы уверены, что не ошиблись с путём?

   
 
 автор: Бамси   (27.10.2007 в 22:13)   письмо автору
 
   для: Саня   (27.10.2007 в 22:05)
 

мм... плохой пример выбрал, извените.

<?php
$hostname 
"s2.travian.ru";
$fp fsockopen($hostname80$errno$errstr30);
  
 
$headers "GET /login.php HTTP/1.1\r\n";   
 
$headers .= "Host: $hostname\r\n";  
 
$headers .= "Connection: Keep-Alive\r\n\r\n";
 
 
fwrite($fp$headers);
 while (!
feof($fp)) $text .= fgets($fp1024); 
 
fclose($fp);
 
if(
strpos($text,'Чтобы')) echo '1';
else echo 
'0';
?>

   
 
 автор: Саня   (27.10.2007 в 22:23)   письмо автору
 
   для: Бамси   (27.10.2007 в 22:13)
 

В данном случае советую воспользоваться функцией mb_strpos(), так как ответ с сервера пришёл в кодировке UTF-8, которую не понимает стандартная функция strpos().

   
 
 автор: Unkind   (27.10.2007 в 22:30)   письмо автору
 
   для: Саня   (27.10.2007 в 22:23)
 

Ф-я strpos() вообще ничего о кодировках не знает.

   
 
 автор: Саня   (27.10.2007 в 22:36)   письмо автору
 
   для: Unkind   (27.10.2007 в 22:30)
 

Именно поэтому, один символ в кодировке UTF-8 (находящийся во второй половине ASCII-таблицы) считается за два.
<?php
$text 
"тестовая строка тест бла";
print 
strpos($text"тест ")."<br/>"// 16
print strpos(iconv("WINDOWS-1251""UTF-8"$text),
             
iconv("WINDOWS-1251""UTF-8""тест ")); // 30

   
 
 автор: Бамси   (27.10.2007 в 23:21)   письмо автору
 
   для: Саня   (27.10.2007 в 22:36)
 

Саня спасибо вам.

   
 
 автор: Unkind   (27.10.2007 в 23:41)   письмо автору
 
   для: Саня   (27.10.2007 в 22:36)
 

Так ведь не символы, а байты считаются.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования