For anybody with older versions of PHP that do not support str_repeat(), here is a simple alternative:
<?php
if(!function_exists("str_repeat")) {
function str_repeat($word, $length) {
$repeated = "";
for($i=0; $i < $length; $i++) {
$repeated .= $word;
}
return $repeated;
}
}
?>
str_repeat
説明
string str_repeat ( string input_str, int multiplier )input を multiplier 回を繰り返した文字列を返します。 multiplier は、0 もしくは 0 より大きい必要があります。もし、multiplier が 0 に設定された場合、この関数は空文字を返します。
for, str_pad(), substr_count() も参照ください。
str_repeat
nobody but me
22-Nov-2006 04:32
22-Nov-2006 04:32
15-Sep-2005 11:32
In reply to what Roland Knall wrote:
It is much simpler to use printf() or sprintf() for leading zeros.
<?php
printf("%05d<br>\n", 1); // Will echo 00001
sprintf("%05d<br>\n", 1); // Will return 00001
?>
22-Jul-2003 02:45
str_repeat does not repeat symbol with code 0 on some (maybe all?) systems (tested on PHP Version 4.3.2 , FreeBSD 4.8-STABLE i386 ).
Use <pre>
while(strlen($str) < $desired) $str .= chr(0);
</pre> to have string filled with zero-symbols.
abodeman at enoughspamalready dot yahoo dot com
28-May-2003 06:35
28-May-2003 06:35
Recursive functions are almost always slower than the corresponding iterative function. Therefore, dmarsh's function will be faster than Gail's.
Gal Chen
19-Mar-2003 12:18
19-Mar-2003 12:18
a response to dmarsh
if u do wanna write a function that fills a string to a length its best to use a recoursive function
function str_repeattolength ($str, $length) {
$strlength= strlen($str);
if ($strlength>= $length) {
return substr($str,0,$length);
} else {
return $str . str_repeattolength($str, $length - $strlength);
}
}
or just use str_pad
bob at bobarmadillo dot com
21-Nov-2002 09:26
21-Nov-2002 09:26
While dmarsh's function is nice it duplicates the function str_pad().
str_repeat is good when you want the entire string repeated.
For instance, if you want to put 6 's in somewhere, str_pad will cut it off at odd places whereas str_repeat will return 6 full  's.
the following will return the same result as dmarsh's code.
$t = "-=-";
print str_pad('',0,$t)."\n";
print str_pad('',1,$t)."\n";
print str_pad('',2,$t)."\n";
...etc.
dmarsh dot NO dot SPAM dot PLEASE at spscc dot ctc dot edu
18-Sep-2002 08:15
18-Sep-2002 08:15
If you need an alternate str_repeat function that outputs an exact length using a particular input string to fill that length (as opposed to repeating the input string), try this little gem:
<?php
// use this function:
function str_repeat2($input, $length) {
// returns the output exactly $length using $input to fill that length
$answer="";
if ($length>=1 && strlen($input)>=1) {
$answer = substr(str_repeat($input, ceil($length/strlen($input)) ), 0, $length);
}
return $answer;
}
//demo the function's use:
$t="-=-";
print str_repeat2($t,0)."\n";
print str_repeat2($t,1)."\n";
print str_repeat2($t,2)."\n";
print str_repeat2($t,3)."\n";
print str_repeat2($t,4)."\n";
print str_repeat2($t,5)."\n";
print str_repeat2($t,6)."\n";
?>
dakota at dir dot bg
25-Jun-2002 07:06
25-Jun-2002 07:06
Note that the first argument is parsed only once, so it's impossible to do things like this:
echo str_repeat(++$i, 10);
The example will produce 10 times the value of $i+1, and will not do a cycle from $i to $i+10.
bryantSPAMw at geocities dot SPAM dot com
25-Oct-2001 08:16
25-Oct-2001 08:16
(For the benefit of those searching the website:)
This is the equivalent of Perl's "x" (repetition) operator, for eg. str_repeat("blah", 8) in PHP does the same thing as "blah" x 8 in Perl.