За последние 24 часа нас посетили 35066 программистов и 1738 роботов. Сейчас ищут 814 программистов ...

Китайские иероглифы

Тема в разделе "PHP для новичков", создана пользователем begunok, 28 ноя 2012.

  1. begunok

    begunok Активный пользователь

    С нами с:
    19 ноя 2012
    Сообщения:
    9
    Симпатии:
    0
    Есть такая строка "Длинные футболки - T恤长 - это на китайском"
    Как определить, есть ли в строке китайские иероглифы?
    $text = "T恤长";
    $pattern = '/[-а-я_А-Я]+/i';
    if(preg_match($pattern, $text)) {// Почему true возвращает?}
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
  3. begunok

    begunok Активный пользователь

    С нами с:
    19 ноя 2012
    Сообщения:
    9
    Симпатии:
    0
    Все равно true возвращает.
     
  4. Gold Dragon

    Gold Dragon Активный пользователь

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    ну так потому что там есть символы кроме этих
     
  5. begunok

    begunok Активный пользователь

    С нами с:
    19 ноя 2012
    Сообщения:
    9
    Симпатии:
    0
    В строке $text = "T恤长"; нет кириллицы.
     
  6. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Код (Text):
    1. if(!preg_match($pattern, $text))
    ну вот так значит
     
  7. begunok

    begunok Активный пользователь

    С нами с:
    19 ноя 2012
    Сообщения:
    9
    Симпатии:
    0
    Да не в этом дело! Функция preg_match не может отличить русские буквы от китайских иероглифов! В этом и вопрос. Как определить есть ли в строке "Длинные футболки - T恤长 - это на китайском" кит. иероглифы?
     
  8. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    музчина, вы мозг не ебите себе и людям, ок????
    вот такая строка на входе????
    Код (Text):
    1. $text = "T恤长";
    или же
    Код (Text):
    1. $text = "Длинные футболки - T恤长";
     
  9. Gold Dragon

    Gold Dragon Активный пользователь

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    добавь параметр u
     
  10. begunok

    begunok Активный пользователь

    С нами с:
    19 ноя 2012
    Сообщения:
    9
    Симпатии:
    0
    Всем спасибо. Решение найдено:
    Код (Text):
    1.    
    2. $pattern = '/\p{Han}+/u';
    3. if(preg_match($pattern, $text))
    4.     {
    5.        //В строке найден хотя бы один китайский иероглиф
    6.     }
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    А если вдруг корейский иероглиф залетит, неотличимый для нашего глаза?
    Может быть перефрмулировать как "содержит буквы, не являющиеся латиницей и кириллицей" и подобрать соответствующую регулярку, а?
     
  12. begunok

    begunok Активный пользователь

    С нами с:
    19 ноя 2012
    Сообщения:
    9
    Симпатии:
    0
    Можно и так. не принципиально. Соответствующую регулярку я нашел.