str_repeat()
(PHP 4, PHP 5, PHP 7)
重复一个字符串
说明
str_repeat(string $input, int $multiplier) : string
返回$input重复$multiplier次后的结果。
参数
- $input
待操作的字符串。
- $multiplier
$input被重复的次数。
$multiplier必须大于等于 0。如果$multiplier被设置为 0,函数返回空字符串。
返回值
返回重复后的字符串。
范例
Example #1str_repeat()范例
<?php echo str_repeat("-=", 10); ?>
以上例程会输出:
-=-=-=-=-=-=-=-=-=-=
参见
- for
str_pad()
使用另一个字符串填充字符串为指定长度substr_count()
计算字串出现的次数
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 ?,?,?
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
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 ...
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.
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; } ?>