function decode_punycode_item($name, $useutf8 = true) { if (substr($name, 0, 4) == "xn--") { $punycode = new Punycode(); $name = $punycode->decode($name); if (!$useutf8) { $name = decode_utf8($name); } } return $name; }
function convert_punycode($url, $is_encode = true) { $url_parts = parse_url($url); $Punycode = new Punycode(); if ($is_encode) { $host = $Punycode->encode($url_parts['host']); } else { $host = $Punycode->decode($url_parts['host']); } $url_parts['host'] = $host; return http_build_url($url, $url_parts); }
/** * Test decoding Punycode * * @param string $decoded Decoded domain * @param string $encoded Encoded domain * @dataProvider domainNamesProvider */ public function testDecode($decoded, $encoded) { $Punycode = new Punycode(); $result = $Punycode->decode($encoded); $this->assertEquals($decoded, $result); }
foreach ($codepoints as $c) { if ($c < $n) { ++$delta; } else { if ($c == $n) { $q = $delta; $k = 0; while ($k += self::BASE) { $t = $k <= $bias ? self::TMIN : ($k >= $bias + self::TMAX ? self::TMAX : $k - $bias); if ($q < $t) { break; } $output .= self::$ENCODE_TABLE[$t + ($q - $t) % (self::BASE - $t)]; $q = (int) (($q - $t) / (self::BASE - $t)); } $output .= self::$ENCODE_TABLE[$q]; $bias = self::adapt($delta, $h + 1, $h == $b); $delta = 0; ++$h; } } } ++$delta; ++$n; } return $output; } } $Punycode = new Punycode(); $msg = "UTF-8: " . $Punycode->decode($plugin_text) . "\nPunnycode: " . $Punycode->encode($plugin_text); $BOT->msg($plugin_sendto, $msg);
/** * 后台网站设置管理 */ function Admin_SettingMng() { global $zbp; echo '<div class="divHeader">' . $zbp->lang['msg']['settings'] . '</div>'; echo '<div class="SubMenu">'; foreach ($GLOBALS['hooks']['Filter_Plugin_Admin_SettingMng_SubMenu'] as $fpname => &$fpsignal) { $fpname(); } echo '</div>'; ?> <form method="post" action="../cmd.php?act=SettingSav<?php echo '&token=' . $zbp->GetToken(); ?> "> <div id="divMain2"> <div class="content-box"><!-- Start Content Box --> <div class="content-box-header"> <ul class="content-box-tabs"> <li><a href="#tab1" class="default-tab"><span><?php echo $zbp->lang['msg']['basic_setting']; ?> </span></a></li> <li><a href="#tab2"><span><?php echo $zbp->lang['msg']['global_setting']; ?> </span></a></li> <li><a href="#tab3"><span><?php echo $zbp->lang['msg']['page_setting']; ?> </span></a></li> <li><a href="#tab4"><span><?php echo $zbp->lang['msg']['comment_setting']; ?> </span></a></li> </ul> <div class="clear"></div> </div> <!-- End .content-box-header --> <div class="content-box-content"> <?php $Punycode = new Punycode(); $decodedBlogHost = $Punycode->decode($zbp->option['ZC_BLOG_HOST']); echo '<div class="tab-content default-tab" style="border:none;padding:0px;margin:0;" id="tab1">'; echo '<table style="padding:0px;margin:0px;width:100%;" class="table_hover table_striped">'; echo '<tr><td class="td25"><p><b>' . $zbp->lang['msg']['blog_host'] . '</b><br/><span class="note">' . $zbp->lang['msg']['blog_host_add'] . '</span></p></td><td><p><input id="ZC_BLOG_HOST" name="ZC_BLOG_HOST" style="width:600px;" type="text" value="' . $decodedBlogHost . '" ' . ($zbp->option['ZC_PERMANENT_DOMAIN_ENABLE'] ? '' : 'readonly="readonly"') . ' />'; echo '<p><label onclick="$(\'#ZC_BLOG_HOST\').prop(\'readonly\', $(\'#ZC_PERMANENT_DOMAIN_ENABLE\').val()==0?true:false);"><input type="text" id="ZC_PERMANENT_DOMAIN_ENABLE" name="ZC_PERMANENT_DOMAIN_ENABLE" class="checkbox" value="' . $zbp->option['ZC_PERMANENT_DOMAIN_ENABLE'] . '"/></label>' . $zbp->lang['msg']['permanent_domain'] . '</p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['blog_name'] . '</b></p></td><td><p><input id="ZC_BLOG_NAME" name="ZC_BLOG_NAME" style="width:600px;" type="text" value="' . $zbp->option['ZC_BLOG_NAME'] . '" /></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['blog_subname'] . '</b></p></td><td><p><input id="ZC_BLOG_SUBNAME" name="ZC_BLOG_SUBNAME" style="width:600px;" type="text" value="' . $zbp->option['ZC_BLOG_SUBNAME'] . '" /></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['copyright'] . '</b><br/><span class="note">' . $zbp->lang['msg']['copyright_add'] . '</span></p></td><td><p><textarea cols="3" rows="6" id="ZC_BLOG_COPYRIGHT" name="ZC_BLOG_COPYRIGHT" style="width:600px;">' . htmlspecialchars($zbp->option['ZC_BLOG_COPYRIGHT']) . '</textarea></p></td></tr>'; echo '</table>'; echo '</div>'; echo '<div class="tab-content" style="border:none;padding:0px;margin:0;" id="tab2">'; echo '<table style="padding:0px;margin:0px;width:100%;" class="table_hover table_striped">'; echo '<tr><td class="td25"><p><b>' . $zbp->lang['msg']['blog_timezone'] . '</b></p></td><td><p><select id="ZC_TIME_ZONE_NAME" name="ZC_TIME_ZONE_NAME" style="width:600px;" >'; echo CreateOptionsOfTimeZone($zbp->option['ZC_TIME_ZONE_NAME']); echo '</select></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['blog_language'] . '</b></p></td><td><p><select id="ZC_BLOG_LANGUAGEPACK" name="ZC_BLOG_LANGUAGEPACK" style="width:600px;" >'; echo CreateOptionsOfLang($zbp->option['ZC_BLOG_LANGUAGEPACK']); echo '</select></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['allow_upload_type'] . '</b></p></td><td><p><input id="ZC_UPLOAD_FILETYPE" name="ZC_UPLOAD_FILETYPE" style="width:600px;" type="text" value="' . $zbp->option['ZC_UPLOAD_FILETYPE'] . '" /></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['allow_upload_size'] . '</b></p></td><td><p><input id="ZC_UPLOAD_FILESIZE" name="ZC_UPLOAD_FILESIZE" style="width:600px;" type="text" value="' . $zbp->option['ZC_UPLOAD_FILESIZE'] . '" /></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['debug_mode'] . '</b></p></td><td><p><input id="ZC_DEBUG_MODE" name="ZC_DEBUG_MODE" type="text" value="' . $zbp->option['ZC_DEBUG_MODE'] . '" class="checkbox"/></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['gzip_compress'] . '</b></p></td><td><p><input id="ZC_GZIP_ENABLE" name="ZC_GZIP_ENABLE" type="text" value="' . $zbp->option['ZC_GZIP_ENABLE'] . '" class="checkbox"/></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['syntax_high_lighter'] . '</b></p></td><td><p><input id="ZC_SYNTAXHIGHLIGHTER_ENABLE" name="ZC_SYNTAXHIGHLIGHTER_ENABLE" type="text" value="' . $zbp->option['ZC_SYNTAXHIGHLIGHTER_ENABLE'] . '" class="checkbox"/></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['close_site'] . '</b></p></td><td><p><input id="ZC_CLOSE_SITE" name="ZC_CLOSE_SITE" type="text" value="' . $zbp->option['ZC_CLOSE_SITE'] . '" class="checkbox"/></p></td></tr>'; echo '</table>'; echo '</div>'; echo '<div class="tab-content" style="border:none;padding:0px;margin:0;" id="tab3">'; echo '<table style="padding:0px;margin:0px;width:100%;" class="table_hover table_striped">'; echo '<tr><td><p><b>' . $zbp->lang['msg']['display_count'] . '</b></p></td><td><p><input id="ZC_DISPLAY_COUNT" name="ZC_DISPLAY_COUNT" style="width:600px;" type="text" value="' . $zbp->option['ZC_DISPLAY_COUNT'] . '" /></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['display_subcategorys'] . '</b></p></td><td><p><input id="ZC_DISPLAY_SUBCATEGORYS" name="ZC_DISPLAY_SUBCATEGORYS" type="text" value="' . $zbp->option['ZC_DISPLAY_SUBCATEGORYS'] . '" class="checkbox"/></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['pagebar_count'] . '</b></p></td><td><p><input id="ZC_PAGEBAR_COUNT" name="ZC_PAGEBAR_COUNT" style="width:600px;" type="text" value="' . $zbp->option['ZC_PAGEBAR_COUNT'] . '" /></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['search_count'] . '</b></p></td><td><p><input id="ZC_SEARCH_COUNT" name="ZC_SEARCH_COUNT" style="width:600px;" type="text" value="' . $zbp->option['ZC_SEARCH_COUNT'] . '" /></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['manage_count'] . '</b></p></td><td><p><input id="ZC_MANAGE_COUNT" name="ZC_MANAGE_COUNT" style="width:600px;" type="text" value="' . $zbp->option['ZC_MANAGE_COUNT'] . '" /></p></td></tr>'; echo '</table>'; echo '</div>'; echo '<div class="tab-content" style="border:none;padding:0px;margin:0;" id="tab4">'; echo '<table style="padding:0px;margin:0px;width:100%;" class="table_hover table_striped">'; echo '<tr><td class="td25"><p><b>' . $zbp->lang['msg']['comment_turnoff'] . '</b></p></td><td><p><input id="ZC_COMMENT_TURNOFF" name="ZC_COMMENT_TURNOFF" type="text" value="' . $zbp->option['ZC_COMMENT_TURNOFF'] . '" class="checkbox"/></p></td></tr>'; echo '<tr><td class="td25"><p><b>' . $zbp->lang['msg']['comment_audit'] . '</b><br/><span class="note">' . $zbp->lang['msg']['comment_audit_comment'] . '</span></p></td><td><p><input id="ZC_COMMENT_AUDIT" name="ZC_COMMENT_AUDIT" type="text" value="' . $zbp->option['ZC_COMMENT_AUDIT'] . '" class="checkbox"/></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['comment_reverse_order'] . '</b></p></td><td><p><input id="ZC_COMMENT_REVERSE_ORDER" name="ZC_COMMENT_REVERSE_ORDER" type="text" value="' . $zbp->option['ZC_COMMENT_REVERSE_ORDER'] . '" class="checkbox"/></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['comments_display_count'] . '</b></p></td><td><p><input id="ZC_COMMENTS_DISPLAY_COUNT" name="ZC_COMMENTS_DISPLAY_COUNT" type="text" value="' . $zbp->option['ZC_COMMENTS_DISPLAY_COUNT'] . '" style="width:600px;" /></p></td></tr>'; echo '<tr><td><p><b>' . $zbp->lang['msg']['comment_verify_enable'] . '</b></p></td><td><p><input id="ZC_COMMENT_VERIFY_ENABLE" name="ZC_COMMENT_VERIFY_ENABLE" type="text" value="' . $zbp->option['ZC_COMMENT_VERIFY_ENABLE'] . '" class="checkbox"/></p></td></tr>'; echo '</table>'; echo '</div>'; ?> </div> <!-- End .content-box-content --> </div> <hr/> <p><input type="submit" class="button" value="<?php echo $zbp->lang['msg']['submit']; ?> " id="btnPost" onclick="" /></p> </div> </form> <?php echo '<script type="text/javascript">ActiveTopMenu("topmenu2");</script>'; echo '<script type="text/javascript">AddHeaderIcon("' . $zbp->host . 'zb_system/image/common/setting_32.png' . '");</script>'; }
/** * Test decoding Punycode in uppercase * * @param string $decoded Decoded domain * @param string $encoded Encoded domain * @dataProvider domainNamesProvider */ public function testDecodeUppercase($decoded, $encoded) { $Punycode = new Punycode(); $result = $Punycode->decode(strtoupper($encoded)); $this->assertEquals($decoded, $result); }