StringUtil에 splitString, padString 추가

This commit is contained in:
2018-04-07 16:27:58 +09:00
parent 0cc7ba368a
commit 7afa36a2b8
7 changed files with 92 additions and 56 deletions
+1 -1
View File
@@ -85,7 +85,7 @@ $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""
$histCount = MYDB_num_rows($result);
for($i=0; $i < $histCount; $i++) {
$history = MYDB_fetch_array($result);
$value = "".$history['year'].StringUtil::Fill2($history['month'], 2, "0");
$value = "".$history['year'].StringUtil::padStringAlignRight($history['month'], 2, "0");
if($history['year'] == $year && $history['month'] == $month) {
echo "
<option selected value={$value}>{$history['year']}년 {$history['month']}월</option>";
+4 -4
View File
@@ -53,7 +53,7 @@ if($me['level'] == 0) {
echo "
<option value={$city['city']}";
if($city['city'] == $_REQUEST['citylist']) { echo " selected"; $valid = 1; }
echo ">==================================================【".StringUtil::Fill($city['name'], 4, '_')."】";
echo ">==================================================【".StringUtil::padString($city['name'], 4, '_')."】";
if($city['nation'] == 0) echo "공백지";
elseif($me['nation'] == $city['nation']) echo "본국==";
else echo "타국==";
@@ -69,7 +69,7 @@ if($me['level'] == 0) {
echo "
<option value={$city['city']}";
if($city['city'] == $_REQUEST['citylist']) { echo " selected"; $valid = 1; }
echo ">==================================================【".StringUtil::Fill($city['name'], 4, '_')."】";
echo ">==================================================【".StringUtil::padString($city['name'], 4, '_')."】";
if($city['nation'] == 0) echo "공백지";
elseif($me['nation'] == $city['nation']) echo "본국==";
else echo "타국==";
@@ -86,7 +86,7 @@ if($me['level'] == 0) {
echo "
<option value={$city['city']}";
if($city['city'] == $_REQUEST['citylist']) { echo " selected"; $valid = 1; }
echo ">==================================================【".StringUtil::Fill($city['name'], 4, '_')."】";
echo ">==================================================【".StringUtil::padString($city['name'], 4, '_')."】";
if($city['nation'] == 0) echo "공백지";
elseif($me['nation'] == $city['nation']) echo "본국==";
else echo "타국==";
@@ -112,7 +112,7 @@ if($myNation['level'] > 0) {
echo "
<option value={$city['city']}";
if($city['city'] == $_REQUEST['citylist']) { echo " selected"; $valid = 1; }
echo ">==================================================【".StringUtil::Fill($city['name'], 4, '_')."】";
echo ">==================================================【".StringUtil::padString($city['name'], 4, '_')."】";
if($city['nation'] == 0) echo "공백지";
elseif($me['nation'] == $city['nation']) echo "본국==";
else echo "타국==";
+9 -3
View File
@@ -1121,7 +1121,7 @@ function PushMsg($type, $nation, $picture, $imgsvr, $from, $fromcolor, $to, $toc
else { $file = "_nation_msg{$nation}.txt"; }
$fp = fopen("logs/{$file}", "a");
//로그 파일에 기록
$str = "{$type}|".StringUtil::Fill($from,12," ")."|".StringUtil::Fill($to,12," ")."|".$date."|".$msg."|".$fromcolor."|".$tocolor."|".$picture."|".$imgsvr;
$str = "{$type}|".StringUtil::padStringAlignRight($from,12," ")."|".StringUtil::padStringAlignRight($to,12," ")."|".$date."|".$msg."|".$fromcolor."|".$tocolor."|".$picture."|".$imgsvr;
fwrite($fp, "{$str}\n");
fclose($fp);
}
@@ -1342,9 +1342,15 @@ function updateTraffic() {
$db->update('general', ['refresh'=>0], true);
$date = date('Y-m-d H:i:s');
$fp = fopen("logs/_traffic.txt", "a");
//일시|년|월|총갱신|접속자|최다갱신자
$msg = StringUtil::Fill2($date,20," ")."|".StringUtil::Fill2($game['year'],3," ")."|".StringUtil::Fill2($game['month'],2," ")."|".StringUtil::Fill2($game['refresh'],8," ")."|".StringUtil::Fill2($online,5," ")."|".StringUtil::Fill2($user['name']."(".$user['refresh'].")",20," ");
file_put_contents(__dir__."logs/_traffic.txt",
StringUtil::padStringAlignRight($date,20," ")
."|".StringUtil::padStringAlignRight($game['year'],3," ")
."|".StringUtil::padStringAlignRight($game['month'],2," ")
."|".StringUtil::padStringAlignRight($game['refresh'],8," ")
."|".StringUtil::padStringAlignRight($online,5," ")
."|".StringUtil::padStringAlignRight($user['name']."(".$user['refresh'].")",20," ")
, FILE_APPEND);
fwrite($fp, $msg."\n");
fclose($fp);
}
+4 -4
View File
@@ -740,10 +740,10 @@ function command_Other($turn, $commandtype) {
function EncodeCommand($fourth, $third, $double, $command) {
$str = StringUtil::Fill2($fourth, 4, "0");
$str .= StringUtil::Fill2($third, 4, "0");
$str .= StringUtil::Fill2($double, 4, "0");
$str .= StringUtil::Fill2($command, 2, "0");
$str = StringUtil::padStringAlignRight($fourth, 4, "0");
$str .= StringUtil::padStringAlignRight($third, 4, "0");
$str .= StringUtil::padStringAlignRight($double, 4, "0");
$str .= StringUtil::padStringAlignRight($command, 2, "0");
return $str;
}
+6 -6
View File
@@ -84,9 +84,9 @@ function processGoldIncome() {
// 실지급율
$ratio = $realoutcome / $originoutcome;
}
$adminLog[] = StringUtil::Fill2((string)$nation['name'],12," ")
." // 세금 : ".StringUtil::Fill2((string)$income,6," ")
." // 세출 : ".StringUtil::Fill2((string)$originoutcome,6," ")
$adminLog[] = StringUtil::padStringAlignRight((string)$nation['name'],12," ")
." // 세금 : ".StringUtil::padStringAlignRight((string)$income,6," ")
." // 세출 : ".StringUtil::padStringAlignRight((string)$originoutcome,6," ")
." // 실제 : ".tab2((string)$realoutcome,6," ")
." // 지급율 : ".tab2((string)round($ratio*100,2),5," ")
." % // 결과금 : ".tab2((string)$nation['gold'],6," ");
@@ -408,9 +408,9 @@ function processRiceIncome() {
// 실지급율
$ratio = $realoutcome / $originoutcome;
}
$adminLog[] = StringUtil::Fill2($nation['name'],12," ")
." // 세곡 : ".StringUtil::Fill2((string)$income,6," ")
." // 세출 : ".StringUtil::Fill2((string)$originoutcome,6," ")
$adminLog[] = StringUtil::padStringAlignRight($nation['name'],12," ")
." // 세곡 : ".StringUtil::padStringAlignRight((string)$income,6," ")
." // 세출 : ".StringUtil::padStringAlignRight((string)$originoutcome,6," ")
." // 실제 : ".tab2((string)$realoutcome,6," ")
." // 지급율 : ".tab2((string)round($ratio*100,2),5," ")
." % // 결과곡 : ".tab2((string)$nation['rice'],6," ");
+7 -1
View File
@@ -939,7 +939,13 @@ function fight($tnmt_type, $tnmt, $phs, $group, $g1, $g2, $type) {
$energy1 = round($energy1); $energy2 = round($energy2);
$damage1 = round($damage1); $damage2 = round($damage2);
$log[] = "<S>●</> ".StringUtil::Fill2($phase, 2, "0")."合 : <C>".StringUtil::Fill2($energy1, 3, "0")."</> <span class='ev_highlight'>(-".StringUtil::Fill2($damage1, 3, "0").")</span> vs <span class='ev_highlight'>(-".StringUtil::Fill2($damage2, 3, "0").")</span> <C>".StringUtil::Fill2($energy2, 3, "0")."</>";
$log[] = '<S>●</> '
.StringUtil::padStringAlignRight($phase, 2, "0").'合 : '
.'<C>'.StringUtil::padStringAlignRight($energy1, 3, "0").'</>'
.'<span class="ev_highlight">(-'.StringUtil::padStringAlignRight($damage1, 3, "0").')</span>'
.' vs '
.'<span class="ev_highlight">(-'.StringUtil::padStringAlignRight($damage2, 3, "0").')</span>'
.'<C>'.StringUtil::padStringAlignRight($energy2, 3, "0").'</>';
if($energy1 <= 0 && $energy2 <= 0) {
if($type == 0) { $sel = 2; break; }
+61 -37
View File
@@ -168,27 +168,69 @@ class StringUtil
return $str;
}
//중간정렬
public static function staticFill($str, $maxsize, $ch)
{
if (!$str) {
$str = '';
function splitString($str, $l = 0) {
//https://php.net/manual/kr/function.str-split.php#107658
if ($l > 0) {
$ret = array();
$len = mb_strlen($str, "UTF-8");
for ($i = 0; $i < $len; $i += $l) {
$ret[] = mb_substr($str, $i, $l, "UTF-8");
}
return $ret;
}
$size = strlen($str);
$count = ($maxsize - $size) / 2;
$string = '';
for ($i=0; $i < $count; $i++) {
$string = $string.$ch;
}
$string = $string.$str;
for ($i=0; $i < $count; $i++) {
$string = $string.$ch;
}
return $string;
return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
}
/**
* str_pad를 유니코드에서 사용할 수 있는 함수, monospace 전각, 반각 구분을 포함.
* @param string $str 원본 문자열
* @param int $maxsize 채우고자 하는 너비. 전각 문자는 2, 반각 문자는 1을 기준으로 함
* @param string $ch 채움 문자열
* @param int $position 원본 문자열의 위치. -1:왼쪽(오른쪽을 채움), 0:가운데(양쪽을 채움), 1:오른쪽(왼쪽을 채움)
* @return string 채워진 문자열. 완벽히 채울 수 없는 경우 $maxsize보다 살짝 작은 길이로 반환 됨.
*/
public static function padString(string $str, int $maxsize, string $ch = ' ', int $position = 0){
$chLen = mb_strwidth($ch, 'UTF-8');
if($chLen == 0){
return padString($str, $maxsize, ' ', $position);
}
$textLen = mb_strwidth($str, 'UTF-8');
$fillTextCnt = intdiv($maxsize - $textLen, $chLen);
if($position < 0){
$fillLeftCnt = 0;
$fillRightCnt = $fillTextCnt;
}
else if($position > 0){
$fillLeftCnt = $fillTextCnt;
$fillRightCnt = 0;
}
else {
$fillLeftCnt = intdiv($fillTextCnt, 2);
$fillRightCnt = $fillTextCnt - $fillLeftCnt;
}
return str_repeat($ch, $fillLeftCnt).$str.str_repeat($ch, $fillRightCnt);
}
public static function padStringAlignRight(string $str, int $maxsize, string $ch = ' '){
return static::padString($str, $maxsize, $ch, 1);
}
public static function padStringAlignLeft(string $str, int $maxsize, string $ch = ' '){
return static::padString($str, $maxsize, $ch, -1);
}
public static function padStringAlignCenter(string $str, int $maxsize, string $ch = ' '){
return static::padString($str, $maxsize, $ch, 0);
}
/**
*
*/
public static function Fill($str, $maxsize, $ch)
{
if (!$str) {
@@ -209,24 +251,6 @@ class StringUtil
return $string;
}
//우측정렬
public static function Fill2($str, $maxsize, $ch='0')
{
if (!$str) {
$str = '';
}
$size = strlen($str);
$count = ($maxsize - $size);
$string = '';
for ($i=0; $i < $count; $i++) {
$string = $string.$ch;
}
$string = $string.$str;
return $string;
}
public static function EscapeTag($str)
{
$str = htmlspecialchars($str);