Вернуться   Форум SAPE.RU > Общие вопросы > Разработка и сопровождение сайтов

-->
Ответ
 
Опции темы
Старый 21.05.2008, 13:17   #1
Дикий
 
Аватар для D.iK.iJ
 
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
D.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущее
Question Сложный вопрос по определению кодировки в PHP

Третий час бьюсь над проблемой определить кодировку текста в PHP.
В Интернете ничего путного нет.
Все что удалось сделать:
PHP код:
$kodirovka=mb_detect_encoding($content"windows-1251, UTF-8");

if (
$kodirovka=='UTF-8'){
$content=iconv('UTF-8''windows-1251'$content);

Все функции правильные, но, как известно, не работают

Кто-нибудь знает как определить кодировку текста в PHP?
(B если уж искать ее в META, то какой регистро независимой функцией это лучше делать? )
D.iK.iJ вне форума   Ответить с цитированием
Старый 21.05.2008, 13:30   #2
Мастер
 
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 237
ahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущее
По умолчанию

Откуда текст? Из файла или из http протокола?
Если из http, то лучше http заголовки проверять.

А кстати, я замечал, что iconv не работает иногда (уж не знаю почему), я всегда конверчу самопальными функциями.
ahsinis вне форума   Ответить с цитированием
Старый 21.05.2008, 14:02   #3
Специалист
 
Регистрация: 03.11.2007
Сообщений: 200
Вес репутации: 205
formalist на пути к лучшему
По умолчанию

Прально посоветовали, кодировку бери из хеадера.
Бывают осечки, но реже, все-таки сервак отдает, а не корявые верстки.

Возможно что iconv не пашет если либа не установлена или смежные либы.
В любом случае тож есть проверочка на этот счет и "ручная сборка".
formalist вне форума   Ответить с цитированием
Старый 21.05.2008, 14:08   #4
Дикий
 
Аватар для D.iK.iJ
 
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
D.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущее
По умолчанию

Да нету никаких заголовков в хэдере ((((((
Максимум что можно - CHARSET=UTF-8 выковырять из Meta. Но я и тут нужную (а главное - быструю) функцию найти не могу.

mb_detect_encoding - не пашет. У него все UTF-8...
D.iK.iJ вне форума   Ответить с цитированием
Старый 21.05.2008, 14:23   #5
Специалист
 
Аватар для Kashey
 
Регистрация: 02.07.2007
Сообщений: 453
Вес репутации: 217
Kashey - очень-очень хороший человекKashey - очень-очень хороший человекKashey - очень-очень хороший человекKashey - очень-очень хороший человек
По умолчанию

1
Цитата:
function detectUTF8($string)
{
return preg_match('%(?:
[\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
|\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
|\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
|\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
|[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
|\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)+%xs', $string);
}
2.
Цитата:
$utf_text=iconv("UTF-8","cp1251//IGNORE",$textin);
if($utf_text) - текст в UTF-8
__________________
Нужны новости? - На скане полмиллиона новостей. Всяко разных.
И как всегда это все ScanLog записывает
Kashey вне форума   Ответить с цитированием
Старый 21.05.2008, 14:29   #6
Специалист
 
Регистрация: 12.11.2007
Сообщений: 148
Вес репутации: 205
RWA - весьма и весьма положительная личностьRWA - весьма и весьма положительная личностьRWA - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от D.iK.iJ Посмотреть сообщение
В Интернете ничего путного нет.
Как это ничего путного нет? Неужели ПХПКлуб не смотрели? Там целый раздел по поводу кодировок. Вот страничка из него: http://phpclub.ru/faq/encodings/encodings4?v=336
Не Ваш случай?
RWA вне форума   Ответить с цитированием
Старый 21.05.2008, 14:33   #7
Дикий
 
Аватар для D.iK.iJ
 
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
D.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущее
По умолчанию

Спасибо! Что-то за 4 часа эта задача съелс мои мозги...

А какой функцией лучше CHARSET=UTF-8 в Meta искать?

Цитата:
Сообщение от RWA Посмотреть сообщение
Как это ничего путного нет? Неужели ПХПКлуб не смотрели? Там целый раздел по поводу кодировок. Вот страничка из него: http://phpclub.ru/faq/encodings/encodings4?v=336
Не Ваш случай?
Видел страничку. Думал, есть что-то немного проще.
Да и в другом источнике код был перекаверкан

Последний раз редактировалось D.iK.iJ; 21.05.2008 в 14:37.
D.iK.iJ вне форума   Ответить с цитированием
Старый 21.05.2008, 15:29   #8
Дикий
 
Аватар для D.iK.iJ
 
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
D.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущее
По умолчанию

Если мне Kashey или RWA ответит какой функцией лучше CHARSET=UTF-8 в Meta тегах искать (а главное - как и почему именно ей?), с удовольствием пожертвую 50 рублей на пиво

str_replace() и substr_count() не предлагать!
D.iK.iJ вне форума   Ответить с цитированием
Старый 21.05.2008, 16:21   #9
Мастер
 
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 237
ahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущее
По умолчанию

Цитата:
Сообщение от D.iK.iJ Посмотреть сообщение
str_replace() и substr_count() не предлагать!
как str_replace можно что-то найти?


Если хочешь из мета тега вытащить, то примерно такая конструкция
PHP код:
if(preg_match("~content=[\"']text/html; charset=([^\"']+)[\"']~i"$text$m)){
   
$charset  strtolower($m[1]); // кодировка в нижнем регистре

ahsinis вне форума   Ответить с цитированием
Старый 21.05.2008, 16:35   #10
Дикий
 
Аватар для D.iK.iJ
 
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
D.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущееD.iK.iJ - прекрасное будущее
По умолчанию

Тогда проще substr_count() со strtolower() использовать
D.iK.iJ вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Asp.net - смена кодировки Avelon Установка кода на различные движки 4 26.04.2008 18:28
Смена кодировки sca Контекстные ссылки и все, что с ними связано 4 13.02.2008 19:07
Наверное тут это уже боян, но когда закроют дыру по определению что ссылка с сапы? Spec123 Вопросы по работе системы 79 26.11.2007 20:37
Вылетели кодировки! ddvhouse Ошибки при работе с системой 10 25.10.2007 17:27
Есть сложный вопрос maxispeed Вопросы по работе системы 8 20.09.2007 22:25


Часовой пояс GMT +3, время: 22:00.