PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): « 1 [2]

> Найдено сообщений: 24
webbaster Отправлено: 09 Апреля, 2011 - 13:43:12 • Тема: Сайт странно отдает кодировку... • Форум: Программирование на PHP

Ответов: 5
Просмотров: 608
Спасибо, буду пробовать.
webbaster Отправлено: 08 Апреля, 2011 - 20:54:05 • Тема: Сайт странно отдает кодировку... • Форум: Программирование на PHP

Ответов: 5
Просмотров: 608
Делаю следующее.
1. Граблю в массив тексты с сайтов и очищаю от html тегов. (file_get_contents, strip_tags)
2. Определяю кодировку каждого элемента и записываю в переменную
3. С помощью оператора switch переключаю на соответствующую функцию перекодирования.
Именно с п.3 проблемы, т.к. если кодировка сграбленного текста определена не правильно, как в случае с сайтом http://ermispb[dot]ru (реально кодировка windows-1251, а определяется как UTF-8), то попадая на функцию
CODE (htmlphp):
скопировать код в буфер обмена
  1. $url_text_processed=iconv("UTF-8", "windows-1251", $text_url);

переменная $url_text_processed оказывается пустая ((
webbaster Отправлено: 08 Апреля, 2011 - 20:17:20 • Тема: Сайт странно отдает кодировку... • Форум: Программирование на PHP

Ответов: 5
Просмотров: 608
Народ, помогите плз.

Сайт http://ermispb[dot]ru

Делаю так:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $url_text=file_get_contents("http://ermispb.ru");
  3. echo mb_detect_encoding($url_text);
  4.  


Отдает UTF-8, хотя сайт работает на windows-1251

Подскажите, что не так на сайте? И как можно избежать подобных несоответствий при определении кодировки текста в php, т.к. если скрипт определяет UTF-8 и перекодирует его в win функцией iconv то отдает пустую переменную ((

Спасибо.
webbaster Отправлено: 04 Апреля, 2011 - 10:02:13 • Тема: Не могу сообразить алгоритм • Форум: Программирование на PHP

Ответов: 3
Просмотров: 391
Всем спасибо за помощь.
webbaster Отправлено: 02 Апреля, 2011 - 21:50:58 • Тема: Не могу сообразить алгоритм • Форум: Программирование на PHP

Ответов: 3
Просмотров: 391
Есть многомерный массив
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3. [0] =>Array ( [раз] => 1 [два] => 5 [три] => 9)
  4. [1] =>Array ( [раз] => 3 [два] => 9)
  5. [2] =>Array ( [два] => 2 [три] => 1)  
  6. )
  7.  


Никак не могу сообразить, как поочередно перебрать ключи массива второго уровня ([раз])+ значения этого массива.

Хотелось бы получить строку такого типа:
$str="В массиве "0" ключ "раз" имеет значение 1 <br />";
$str.="В массиве "1" ключ "раз" имеет значение 3<br />";
$str.="В массиве "2" ключ "раз" имеет значение NULL<br />";

И так со всеми ключами ([два] [три])
webbaster Отправлено: 27 Марта, 2011 - 19:53:49 • Тема: Подсчет количество букв в строке на кирилице • Форум: Кодировки и все смежное

Ответов: 4
Просмотров: 11942
Мелкий пишет:
Или лучше mb_internal_encoding

Спасибо OrmaJever.
PS В mb_internal_encoding нет необходимости, т.к. предварительно проводил перекодирвку в UTF-8
webbaster Отправлено: 27 Марта, 2011 - 00:47:05 • Тема: Подсчет количество букв в строке на кирилице • Форум: Кодировки и все смежное

Ответов: 4
Просмотров: 11942
$a="как";
echo mb_strlen($a);

//Выдает 6, хотя буквы всего 3. Понимаю, что проблема в том, что строка на кирилице, т.к. //если вбивать цифры или англ.буквы, то считает правильно. Но как посчитать русские //буквы, не догнать...
webbaster Отправлено: 24 Марта, 2011 - 12:10:27 • Тема: Не записываются данные в массив... • Форум: Программирование на PHP

Ответов: 3
Просмотров: 401
DeepVarvar пишет:
4-я строка:
PHP:
скопировать код в буфер обмена
  1. $text_url= iconv("CP1251", "UTF-8", $text_url);

А последнюю убрать совсем


спс
webbaster Отправлено: 24 Марта, 2011 - 06:51:26 • Тема: Не записываются данные в массив... • Форум: Программирование на PHP

Ответов: 3
Просмотров: 401
Есть массив и нужно проверить кодировку каждого элемента и если не UTF-8, то перекодировать.

PHP:
скопировать код в буфер обмена
  1. foreach ($url_text as $key => $text_url) {
  2.         $charset=detect_cyr_charset($text_url);
  3.         if ($charset=w) {
  4.                 $url_text[$key]= iconv("CP1251", "UTF-8", $url_text[$key]);
  5.         }
  6.         else $url_text[$key]=$text_url;


Проблема заключается в том, что элементы, которые удовлетворяют условиям не записываются в массив.
Что не так???

Да, кстати, функция определения кодировки строки следующая:


PHP:
скопировать код в буфер обмена
  1. define('LOWERCASE',3);
  2.    define('UPPERCASE',1);
  3.    function detect_cyr_charset($str) {
  4.       $charsets = Array(
  5.          'k' => 0,
  6.          'w' => 0,
  7.          'd' => 0,
  8.          'i' => 0,
  9.          'm' => 0
  10.       );
  11.       for ( $i = 0, $length = strlen($str); $i < $length; $i++ ) {
  12.          $char = ord($str[$i]);
  13.       //non-russian characters
  14.       if ($char < 128 || $char > 256) continue;
  15.       //CP866
  16.       if (($char > 159 && $char < 176) || ($char > 223 && $char < 242))
  17.          $charsets['d']+=LOWERCASE;
  18.       if (($char > 127 && $char < 160)) $charsets['d']+=UPPERCASE;
  19.       //KOI8-R
  20.       if (($char > 191 && $char < 223)) $charsets['k']+=LOWERCASE;
  21.       if (($char > 222 && $char < 256)) $charsets['k']+=UPPERCASE;
  22.       //WIN-1251
  23.       if ($char > 223 && $char < 256) $charsets['w']+=LOWERCASE;
  24.       if ($char > 191 && $char < 224) $charsets['w']+=UPPERCASE;
  25.       //MAC
  26.       if ($char > 221 && $char < 255) $charsets['m']+=LOWERCASE;
  27.       if ($char > 127 && $char < 160) $charsets['m']+=UPPERCASE;
  28.       //ISO-8859-5
  29.       if ($char > 207 && $char < 240) $charsets['i']+=LOWERCASE;
  30.       if ($char > 175 && $char < 208) $charsets['i']+=UPPERCASE;
  31.    }
  32.    arsort($charsets);
  33.    return key($charsets);

Страниц (2): « 1 [2]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB