Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск вхождения при неизвестной кодировке.
Форумы портала PHP.SU » PHP » Регулярные выражения » Поиск вхождения при неизвестной кодировке.

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

1. snikers987 - 14 Августа, 2012 - 12:04:25 - перейти к сообщению
А есть ли какой нибудь более менее универсальный способ поиска совпадений в документах с разной кодировкой?
Или хотя бы для самых распространенных windows-1251 и utf-8.
Стандартные средства php типа iconv(), mb_convert_encoding() не дают желаемого результата..
Спасибо.
2. Stierus - 14 Августа, 2012 - 12:30:03 - перейти к сообщению
Найти кодировку документа (для основных кодировок, есть куча готовых функций) -> привести к единой кодировке -> искать в уже известной единой кодировке
3. snikers987 - 14 Августа, 2012 - 13:20:14 - перейти к сообщению
Stierus пишет:
-> привести к единой кодировке ->


iconv() ?
4. EuGen - 14 Августа, 2012 - 13:25:18 - перейти к сообщению
Отрывок кода для определения кодировки:
PHP:
скопировать код в буфер обмена
  1.     protected function _detect_encoding($sData)
  2.     {
  3.         foreach ($this->rgCharsets as $item)
  4.         {
  5.             $sTest = iconv($item, $item.'//IGNORE', $sData);
  6.             if(md5($sTest) == md5($sData))
  7.             {
  8.                 return $item;
  9.             }
  10.         }
  11.         return false;
  12.     }

При этом
PHP:
скопировать код в буфер обмена
  1.     protected $rgCharsets=array(
  2.         'UTF-8',
  3.         'Windows-1251'
  4.     );

- после определения кодировки сконвертировать ее в единую (как сказали выше). Затем искать.
5. snikers987 - 14 Августа, 2012 - 19:29:01 - перейти к сообщению
Спасибо, дошло.

 

Powered by ExBB FM 1.0 RC1