svnno****@sourc*****
svnno****@sourc*****
2010年 1月 10日 (日) 20:34:07 JST
Revision: 769 http://sourceforge.jp/projects/p2-php/svn/view?view=rev&revision=769 Author: rsk Date: 2010-01-10 20:34:07 +0900 (Sun, 10 Jan 2010) Log Message: ----------- - ã¿ã¤ãã«ãä¼¼ã¦ããã¹ã¬ãããæ¤ç´¢ããéã®æ£è¦åã«intlã¨ã¯ã¹ãã³ã·ã§ã³ã å©ç¨ã§ããå ´å㯠Normalizer::normalize() ã使ãããã«ããã - PCç¨ãã¥ã¼ã§ã¹ã¬ããä¸è¦§ã®è¡ã«ä»¥ä¸ã®CSSã¯ã©ã¹ãä»å ããããã«ããã r_odd: å¥æ°è¡ãr1ã¨åã r_even: å¶æ°è¡ãr2ã¨åã r_read: æ¢èªã¹ã¬ãã r_offline: subject.txt ã«ç¡ãã¹ã¬ãã r_new: æ°çã¬ã¹ã®ããã¹ã¬ãã r_brand_new: æ°çã¹ã¬ãã Modified Paths: -------------- p2ex/trunk/lib/p2util.inc.php p2ex/trunk/lib/sb_print.inc.php -------------- next part -------------- Modified: p2ex/trunk/lib/p2util.inc.php =================================================================== --- p2ex/trunk/lib/p2util.inc.php 2010-01-10 06:52:28 UTC (rev 768) +++ p2ex/trunk/lib/p2util.inc.php 2010-01-10 11:34:07 UTC (rev 769) @@ -6,14 +6,15 @@ // {{{ CONSTANTS /** - * ®ÌŬl + * ®ÌÅålÆŬl */ +define('P2_INT_MAX', PHP_INT_MAX); define('P2_INT_MIN', - PHP_INT_MAX - 1); /** * ¿É}b`·é³K\» */ -//define('P2_REGEX_KANJI', mb_convert_encoding('/[ê-ê]/u', 'UTF-8', 'CP932')); +//define('P2_REGEX_KANJI', mb_convert_encoding('/[ê-ê]/u', 'UTF-8', 'SJIS-win')); define('P2_REGEX_KANJI', '/[\\x{4e00}-\\x{9fa0}]/u'); /** @@ -30,7 +31,7 @@ //'[a-z][a-z_\\-]*', //'[0-9][0-9.]*', '[0-9a-z][0-9a-z_\\-]*', -)) . ')/u', 'UTF-8', 'CP932')); +)) . ')/u', 'UTF-8', 'SJIS-win')); */ define('P2_REGEX_WAKATI', '/( #[\\x{4e00}-\\x{9fa0}]+[\\x{3041}-\\x{3093}]*| @@ -54,7 +55,7 @@ mb_convert_encoding( '/([¤©-±³-»½-ÆÍ-ÙEJ-RT-\^-gn-zTR])%u3099%|([Í-Ùn-z])%u309A%/u', 'UTF-8', - 'CP932' + 'SJIS-win' ) ) ); @@ -68,11 +69,13 @@ * htmlspecialchars($value, ENT_QUOTES) ÌV[gJbg * * @param string $str +* @param string $charset +* @param bool $double_encode * @return string */ -function p2h($str) +function p2h($str, $charset = 'Shift_JIS', $double_encode = true) { - return htmlspecialchars($str, ENT_QUOTES); + return htmlspecialchars($str, ENT_QUOTES, $charset, $double_encode); } // }}} @@ -261,7 +264,7 @@ $kb = $usage / 1024; $kb = number_format($kb, 2, '.', ''); - echo 'Memory Usage: ' . $kb . 'KB'; + echo 'Memory Usage: ' . $kb . 'KiB'; } // }}} @@ -288,7 +291,7 @@ // {{{ p2_si2int() /** - * SIPÊnÌlð®ÉÏ··é + * SIÚª«Â«Ìlð®ÉÏ··é * * @param numeric $num * @param string $kmg @@ -313,7 +316,7 @@ // {{{ p2_si2real() /** - * SIPÊnÌlðÀÉÏ··é + * SIÚª«Â«ÌlðÀÉÏ··é * µ§ÉÍ1000{·é̪³µ¢ªA ¦Ä1024{·é * * @param numeric $num @@ -341,7 +344,7 @@ * @param string $encoding * @return string */ -function p2_mb_basename($path, $encoding = 'CP932') +function p2_mb_basename($path, $encoding = 'SJIS-win') { if (DIRECTORY_SEPARATOR != '/') { $path = str_replace(DIRECTORY_SEPARATOR, '/', $path); @@ -423,20 +426,47 @@ } // }}} +// {{{ p2_normalize() + +if (extension_loaded('intl')) { + /** + * NormalizerNXðgÁ½³K»Ö + * + * @param string $str + * @return string + */ + function p2_normalize($str) + { + return strtolower(Normalizer::normalize(mb_convert_encoding( + $str, 'UTF-8', 'SJIS-win'), Normalizer::NFKC)); + } +} else { + /** + * ·²KȳK»Ö + * + * @param string $str + * @return string + */ + function p2_normalize($str) + { + return mb_strtolower(mb_convert_kana(mb_convert_encoding( + $str, 'UTF-8', 'SJIS-win'), 'KVas', 'UTF-8'), 'UTF-8'); + } +} + +// }}} // {{{ p2_wakati() /** - * ·²KȳK»&ª©¿«Ö + * ·²KȪ©¿«Ö * * @param string $str * @return array */ function p2_wakati($str) { - return array_filter(array_map('trim', preg_split(P2_REGEX_WAKATI, - mb_strtolower(mb_convert_kana(mb_convert_encoding( - $str, 'UTF-8', 'CP932'), 'KVas', 'UTF-8'), 'UTF-8'), - -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY)), 'strlen'); + $str = preg_replace(P2_REGEX_WAKATI, '$0 ', p2_normalize($str)); + return preg_split('/\\s+/u', $str, -1, PREG_SPLIT_NO_EMPTY); } // }}} @@ -460,7 +490,7 @@ } //rsort($featured_words, SORT_STRING); - $pattern = mb_convert_encoding(implode(' ', $featured_words), 'CP932', 'UTF-8'); + $pattern = mb_convert_encoding(implode(' ', $featured_words), 'SJIS-win', 'UTF-8'); return str_replace(' ', '|', StrCtl::wordForMatch($pattern, 'or')); } @@ -498,6 +528,9 @@ */ function p2_combine_nfd_kana($str) { + if (extension_loaded('intl')) { + return Normalizer::normalize($str, Normalizer::NFC); + } return preg_replace_callback(P2_REGEX_NFD_KANA, '_p2_combine_nfd_kana', $str); } @@ -557,7 +590,7 @@ */ function p2_correct_css_color($color) { - return preg_replace('/^#([0-9A-F])([0-9A-F])([0-9A-F])$/i', '#\\1\\1\\2\\2\\3\\3', $color); + return preg_replace('/^#([0-9A-F])([0-9A-F])([0-9A-F])$/i', '#$1$1$2$2$3$3', $color); } // }}} Modified: p2ex/trunk/lib/sb_print.inc.php =================================================================== --- p2ex/trunk/lib/sb_print.inc.php 2010-01-10 06:52:28 UTC (rev 768) +++ p2ex/trunk/lib/sb_print.inc.php 2010-01-10 11:34:07 UTC (rev 769) @@ -218,15 +218,16 @@ // tr cssNX if ($i % 2) { - $class_r = ' class="r1"'; // ïs + $row_class = 'r1 r_odd'; } else { - $class_r = ' class="r2"'; // ôs + $row_class = 'r2 r_even'; } //V X ============================================= $unum_ht_c = ' '; // ù¾ÏÝ if ($aThread->isKitoku()) { + $row_class .= ' r_read'; // readÍߪ // $ttitle_en_q Í߸Ȫ $delelog_js = "return wrapDeleLog('{$base_q}{$sid_q}',this);"; @@ -236,6 +237,7 @@ // subject.txtÉÈ¢ if (!$aThread->isonline) { + $row_class .= ' r_offline'; // JavaScriptÅÌmF_CAO è $unum_ht_c = <<<EOP <a class="un_n" href="{$_conf['subject_php']}?{$base_q}{$spmode_q}&dele=true" target="_self" onclick="if (!window.confirm('OðíµÜ·©H')) {return false;} {$delelog_js}"{$title_at}>-</a> @@ -243,6 +245,7 @@ // V è } elseif ($aThread->unum > 0) { + $row_class .= ' r_new'; $midoku_ari = true; $unum_ht_c = <<<EOP <a id="un{$i}" class="un_a" href="{$_conf['subject_php']}?{$base_q}{$spmode_q}&dele=true" target="_self" onclick="{$delelog_js}"{$title_at}>{$aThread->unum}</a> @@ -332,6 +335,7 @@ // VKX if ($aThread->new) { + $row_class .= ' r_brand_new'; $classtitle_q = ' class="thre_title_new"'; } else { $classtitle_q = ' class="thre_title"'; @@ -430,7 +434,7 @@ // {fB echo <<<EOR -<tr{$class_r}> +<tr class="{$row_class}"> {$td['edit']}{$td['offrec']}{$td['unum']}{$td['rescount']}{$td['one']}{$td['checkbox']}<td{$class_to}>{$torder_ht}</td> <td{$class_tl}>{$moto_thre_ht}<a id="tt{$i}" href="{$thre_url}" title="{$aThread->ttitle_hd}"{$classtitle_q}{$change_color}>{$ttitle_ht}</a></td> {$td['ita']}{$td['spd']}{$td['ikioi']}{$td['birth']}{$td['fav']}</tr>\n