note 58771 added to function.str-pad

From: Date: Tue, 15 Nov 2005 15:53:53 +0000
Subject: note 58771 added to function.str-pad
Groups: php.notes 
Request: Send a blank email to php-notes+get-98616@lists.php.net to get a copy of this message
Hello, for anyone who needs this, I wrote this extension to str_pad. For details, just look at the comments. <?php $string = 'this is a test'; $oldLen = strlen($string); $direction = STR_PAD_BOTH; echo $string.'<br>'; echo str_const_len($string, 100, '#', $direction).'<br>'; echo $string.'<br>'; echo str_const_len($string, $oldLen, '#', $direction).'<br>'; echo $string.'<br><br>'."\n"; /* This function is an extension to str_pad. It manipulates the referenced string '$str' and stretches or reduces it to the specified length. It returns the number of characters, that were added or stripped. */ function str_const_len(&$str, $len, $char = ' ', $str_pad_const = STR_PAD_RIGHT) { $dir = STR_PAD_RIGHT; $origLen = strlen($str); if (strlen($str) < $len) { /* stretch string */ $str = str_pad($str, $len, $char, $str_pad_const); } else { /* reduce string */ switch ($str_pad_const) { case STR_PAD_LEFT: $str = substr($str, (strlen($str) - $len), $len); break; case STR_PAD_BOTH: /* reduce on both sides, beginning with the right one. */ while (strlen($str) > $len) { if ($dir == STR_PAD_RIGHT) { $str = substr($str, 0, (strlen($str) - 1)); $dir = STR_PAD_LEFT; } else { $str = substr($str, 1); $dir = STR_PAD_RIGHT; } } break; default: $str = substr($str, 0, $len); break; } } return ($len - $origLen); } ?> ---- Manual Page -- http://www.php.net/manual/en/function.str-pad.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+58771 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+58771&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+58771&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+58771&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+58771&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+58771&report=yes&reason=non-english Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+58771&report=yes&reason=already+in+docs Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+58771&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+58771&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#98616) next »