我有字符串:
$output = "Program: First 0 0 0 0 0 0 0 Program: Second 0 0 0 0 0 Program: Third 0 0 0 0 0 0 0 0";
我需要这个输出:
$output = "Program: First 7 Program: Second 5 Program: Third 8";
我知道我可以算上所有" 0"使用" substr_count"出现,但我如何在文本之前计算特定的零组" Program"?
答案 0 :(得分:2)
可以这样做:
$output = "Program: First 0 0 0 0 0 0 0 Program: Second 0 0 0 0 0 Program: Third 0 0 0 0 0 0 0 0";
$pieces = explode('Program',$output);
foreach($pieces as $piece){
echo substr_count($piece, '0').PHP_EOL;
}
输出:
0
7
5
8
其他方式:
$programs = Array('First','Second','Third');
$output = "Program: First 0 0 0 0 0 0 0 Program: Second 0 0 0 0 0 Program: Third 0 0 0 0 0 0 0 0";
$pieces = explode(' Program:',$output);
$looutput = '';
$i = 0;
foreach($pieces as $piece){
$loutput .= 'Program: '.$programs[$i].' '.substr_count($piece, '0').' ';
$i++;
}
echo $loutput;
输出:
Program: First 7 Program: Second 5 Program: Third 8
答案 1 :(得分:2)
这将完全输出您需要的内容。它不是那么漂亮,你可能会找到一个更好的谷歌解决方案,但这只是我的想法:
<?php
$output = "Program: First 0 0 0 0 0 0 0 Program: Second 0 0 0 0 0 Program: Third 0 0 0 0 0 0 0 0";
$output = explode("Program:", $output);
array_splice($output, 0,1 );
$endString = '';
foreach($output as $elem) {
$count = substr_count($elem, "0");
$elemWithoutZero = str_replace('0', '', $elem);
$endString = $endString . 'Program: ' . $elemWithoutZero . $count . ' ';
}
var_dump($endString);
?>
输出:
string(74) "Program: First 7 Program: Second 5 Program: Third 8"
无论如何,如果您获得了那种数据,您可能会在创建该数据的地方找到更好的解决方案。
答案 2 :(得分:1)
substr_count
可以提供最大长度来计算直到。只需使用strpos
找到“Second”的索引,并将0指向该索引。你也可以提供带有偏移量的'substr_count',所以从下一个零范围的偏移量开始。