str_repeat

(PHP 4, PHP 5)

str_repeat -- Repeat a string

Description

string str_repeat ( string input, int multiplier )

Returns input_str repeated multiplier times. multiplier has to be greater than or equal to 0. If the multiplier is set to 0, the function will return an empty string.

例子 1. str_repeat() example

<?php
echo str_repeat("-=", 10);
?>

上例将输出:

-=-=-=-=-=-=-=-=-=-=

See also for, str_pad(), and substr_count().


add a note add a note User Contributed Notes
15-Sep-2005 10: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 01: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 05:35
Recursive functions are almost always slower than the corresponding iterative function. Therefore, dmarsh's function will be faster than Gail's.
Gal Chen
18-Mar-2003 11: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 08: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 &nbsp;'s in somewhere, str_pad will cut it off at odd places whereas str_repeat will return 6 full &nbsp'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 07: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($inputceil($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 06: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 07: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.