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

Убирать лишнее...

Тема в разделе "Регулярные выражения", создана пользователем kostyl, 24 май 2009.

  1. kostyl

    kostyl Guest

    Ок. Прийду домой попробую...
     
  2. kostyl

    kostyl Guest

    Блин cp1251 понимает, но опять же тупит, то не то выделит, то не правильно перенесет...
    Вот если сделать такой код:
    PHP:
    1.  
    2. <?php
    3.     $Highlighter = new GeSHi(mb_convert_encoding($this->_sCode, 'ASCII', 'UTF-8'), $this->_sCodeName);
    4.     $Highlighter->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
    5.     $Highlighter->set_encoding('ASCII');
    6.     return mb_convert_encoding($Highlighter->parse_code(), 'UTF-8', 'ASCII');
    7.  
    то все впрорядке, только кириллица не отображается верно. Возникает вопрос почему. Вероятный ответ. Что то не так после 127 кода, потому что там как бы заканчивается ASCII и начинается cp1251. Смотрю в GeShi.php. И что я нахожу? А вот что:
    PHP:
    1.  
    2. <?php
    3. if ($es_char == "\n") {
    4.     // don't put a newline around newlines
    5.     $string .= "</span>\n";
    6.     $start = $es_pos + 2;
    7. } else if (ord($es_char) >= 128) {
    8.     //This is an non-ASCII char (UTF8 or single byte)
    9.     //This code tries to work around SF#2037598 ...
    10.     if(function_exists('mb_substr')) {
    11.         $es_char_m = mb_substr(substr($part, $es_pos+1, 16), 0, 1, $this->encoding);
    12.         $string .= $es_char_m . '</span>';
    13.     } else if (!GESHI_PHP_PRE_433 && 'utf-8' == $this->encoding) {
    14.         if(preg_match("/[\xC2-\xDF][\x80-\xBF]".
    15.             "|\xE0[\xA0-\xBF][\x80-\xBF]".
    16.             "|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}".
    17.             "|\xED[\x80-\x9F][\x80-\xBF]".
    18.             "|\xF0[\x90-\xBF][\x80-\xBF]{2}".
    19.             "|[\xF1-\xF3][\x80-\xBF]{3}".
    20.             "|\xF4[\x80-\x8F][\x80-\xBF]{2}/s",
    21.             $part, $es_char_m, null, $es_pos + 1)) {
    22.             $es_char_m = $es_char_m[0];
    23.         } else {
    24.             $es_char_m = $es_char;
    25.         }
    26.         $string .= $this->hsc($es_char_m) . '</span>';
    27.     } else {
    28.         $es_char_m = $this->hsc($es_char);
    29.     }
    30.     $start = $es_pos + strlen($es_char_m) + 1;
    31. } else {
    32.     $string .= $this->hsc($es_char) . '</span>';
    33.     $start = $es_pos + 2;
    34. }
    35.  
    Че это за фигня
    Вернее SF#2037598 - это что такое? Кто-нибудь знает?