note 71558 deleted from function.str-pad by googleguy
| From: | googleguy@php.net | Date: | Tue, 22 Oct 2013 14:59:50 +0000 |
| Subject: | note 71558 deleted from function.str-pad by googleguy | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-197284@lists.php.net to get a copy of this message | ||
Note Submitter: Charles
----
More corrections to the original flap / Tomek Krzeminski code below (well someone has to check it!)
-- the code is a bit mangled but it is still the same:
<?php
function mb_str_pad($ps_input, $pn_pad_length, $ps_pad_string = " ", $pn_pad_type =
STR_PAD_RIGHT, $ps_encoding = NULL) {
$ret = "";
if (is_null($ps_encoding))
$ps_encoding = mb_internal_encoding();
$hn_length_of_padding = $pn_pad_length - mb_strlen($ps_input, $ps_encoding);
$hn_psLength = mb_strlen($ps_pad_string, $ps_encoding); // pad string length
if ($hn_psLength <= 0 || $hn_length_of_padding <= 0) {
// Padding string equal to 0:
//
$ret = $ps_input;
}
else {
$hn_repeatCount = floor($hn_length_of_padding / $hn_psLength); // how many times repeat
if ($pn_pad_type == STR_PAD_BOTH) {
$hs_lastStrLeft = "";
$hs_lastStrRight = "";
$hn_repeatCountLeft = $hn_repeatCountRight = ($hn_repeatCount - $hn_repeatCount % 2) / 2;
$hs_lastStrLength = $hn_length_of_padding - 2 * $hn_repeatCountLeft * $hn_psLength; // the
rest length to pad
$hs_lastStrLeftLength = $hs_lastStrRightLength = floor($hs_lastStrLength / 2); // the
rest length divide to 2 parts
$hs_lastStrRightLength += $hs_lastStrLength % 2; // the last char add to right side
$hs_lastStrLeft = mb_substr($ps_pad_string, 0, $hs_lastStrLeftLength, $ps_encoding);
$hs_lastStrRight = mb_substr($ps_pad_string, 0, $hs_lastStrRightLength, $ps_encoding);
$ret = str_repeat($ps_pad_string, $hn_repeatCountLeft) . $hs_lastStrLeft;
$ret .= $ps_input;
$ret .= str_repeat($ps_pad_string, $hn_repeatCountRight) . $hs_lastStrRight;
}
else {
$hs_lastStr = mb_substr($ps_pad_string, 0, $hn_length_of_padding % $hn_psLength,
$ps_encoding); // last part of pad string
if ($pn_pad_type == STR_PAD_LEFT)
$ret = str_repeat($ps_pad_string, $hn_repeatCount) . $hs_lastStr . $ps_input;
else
$ret = $ps_input . str_repeat($ps_pad_string, $hn_repeatCount) . $hs_lastStr;
}
}
return $ret;
}
?>