略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: str_repeat

2024-12-22

str_repeat

(PHP 4, PHP 5, PHP 7, PHP 8)

str_repeat重复一个字符串

说明

str_repeat(string $input, int $multiplier): string

返回 input 重复 multiplier 次后的结果。

参数

input

待操作的字符串。

multiplier

input 被重复的次数。

multiplier 必须大于等于 0。如果 multiplier 被设置为 0,函数返回空字符串。

返回值

返回重复后的字符串。

范例

示例 #1 str_repeat() 范例

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

以上例程会输出:

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

参见

add a noteadd a note

User Contributed Notes 5 notes

up
34
Damien Bezborodov
13 years ago
Here is a simple one liner to repeat a string multiple times with a separator:

<?php
implode
($separator, array_fill(0, $multiplier, $input));
?>

Example script:
<?php

// How I like to repeat a string using standard PHP functions
$input = 'bar';
$multiplier = 5;
$separator = ',';
print
implode($separator, array_fill(0, $multiplier, $input));
print
"\n";

// Say, this comes in handy with count() on an array that we want to use in an
// SQL query such as 'WHERE foo IN (...)'
$args = array('1', '2', '3');
print
implode(',', array_fill(0, count($args), '?'));
print
"\n";
?>

Example Output:
bar,bar,bar,bar,bar
?,?,?
up
3
Anonymous
10 years ago
hi guys ,
i've faced this example :
<?php

$my_head
= str_repeat("°~", 35);
echo
$my_head;

?>

so , the length should be 35x2 = 70 !!!
if we echo it :

<?php
$my_head
= str_repeat("°~", 35);
echo
strlen($my_head); // 105
echo mb_strlen($my_head, 'UTF-8'); // 70
?>

be carefull with characters and try to use mb_* package to make sure everything goes well ...
up
2
claude dot pache at gmail dot com
13 years ago
Here is a shorter version of Kees van Dieren's function below, which is moreover compatible with the syntax of str_repeat:

<?php
function str_repeat_extended($input, $multiplier, $separator='')
{
    return
$multiplier==0 ? '' : str_repeat($input.$separator, $multiplier-1).$input;
}
?>
up
0
Alexander Ovsiyenko
3 years ago
http://php.net/manual/en/function.str-repeat.php#90555

Damien Bezborodov , yeah but execution time of your solution is 3-5 times worse than str_replace.

<?php

function spam($number) {
    return
str_repeat('test', $number);
}

function
spam2($number) {
    return
implode('', array_fill(0, $number, 'test'));
}

//echo spam(4);
$before = microtime(true);
for (
$i = 0; $i < 100000; $i++) {
   
spam(10);
}
echo
microtime(true) - $before , "\n"; // 0.010297
$before = microtime(true);
for (
$i = 0; $i < 100000; $i++) {
   
spam2(10);
}
echo
microtime(true) - $before; // 0.032104
up
-4
Anonymous
18 years ago
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.

官方地址:https://www.php.net/manual/en/function.str-repeat.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3