meta chraset

Тема в разделе "Регулярные выражения", создана пользователем artcosmic, 4 фев 2010.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. artcosmic

    artcosmic

    Регистр.:
    16 сен 2008
    Сообщения:
    198
    Симпатии:
    161
    Помогите, плиз
    Нужна регулярка, которая способна вытащить название кодировки из тега meta charset
    Задача усложняется тем, что разные вебмастера пишут этот тег по-разному - кто-то с пробелами, кто-то с слэшем в конце, кто-то в кавычках, кто-то в апострофах, кто-то без кавычек вообще
    Может, есть у кого-то готовое решение?

    P.S. Сорри за опечатку в названии
     
  2. alfaexpert

    alfaexpert

    Регистр.:
    23 июл 2008
    Сообщения:
    183
    Симпатии:
    27
    А не легче ли использовать php функции mbstring для определения кодировки страницы? :)

    Потому что есть быдловерстальщики, которые могут вообще не ставить кодировку или например для страницы UTF8 ставить метатэг cp1251.
     
  3. artcosmic

    artcosmic

    Регистр.:
    16 сен 2008
    Сообщения:
    198
    Симпатии:
    161
    Проблема в том, что я работаю не в РНР, а в .NET :)
    А насчет таких вот быдлокодеров... Ну, utf-8 нормально я определяю по BOM. Всё, что не utf-8 - я ставлю windows-1251 и иногда промахиваюсь, ибо есть в наше время уникалы, которые верстают в koi8-r(u) и вот их хотелось бы отлавливать.
     
  4. alfaexpert

    alfaexpert

    Регистр.:
    23 июл 2008
    Сообщения:
    183
    Симпатии:
    27
    Тогда тут нужно искать аналоги в .Net если там такого функционала совсем нет то лично я очень разочарован в .Net


    http://http.is/wMVGA/
     
    solokhan нравится это.
  5. artcosmic

    artcosmic

    Регистр.:
    16 сен 2008
    Сообщения:
    198
    Симпатии:
    161
    Не стоит разочаровываться в .NET - очень хорошая система.
    За ссылку на гугл спасибо, конечно, но искать я и сам умею ;)
    Правда, находить не всегда получается.

    Сформулирую проблему точнее
    1. Тексты в кодировке utf-8 определяются запросто средствами самого .NET.
    2. Тексты в других кодировках определяются как ISO-XXXX-X. Я, когда встречаю ISO, перевожу его в windows-1251. На 90% процентах сайтов прокатывает. Но остается 10% сайтов в кодировке KOI-8, которые превращаются в абракадабру.
    Вот я и подумал, что меня спасет регулярка, которая, в дополнение к стандартным методам определения кодировки .NET, поможет мне вычислить эти сайты и явно указать для них нужную кодировку. Тогда останется 1% сайтов, сделанных в кодировке KOI8 с непрописанным тегом meta charset.
    Кто-нибудь знает эту регулярку? Я же не единственный с таким столкнулся. Или есть более элегантное решение?
     
  6. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Кодировку не обязательно прописывать в meta, она может быть в соответствующем http заголовке (Content-Type), поэтому помимо html надо проверять заголовок.
    Выдрать кодировку из мета -
    Код:
    <meta[^>]+\bContent-Type\b[^>]*> #раз
    charset\s*=\s*([^\s"'>;]+) #два
    
     
    artcosmic нравится это.
  7. artcosmic

    artcosmic

    Регистр.:
    16 сен 2008
    Сообщения:
    198
    Симпатии:
    161
    Удалил. Ошибся. Всё работает. Спасибо RolCom :)
     
Статус темы:
Закрыта.