使用文本分隔符计算字符串内特定字符的数量

时间:2014-09-17 17:51:37

标签: 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 = "Program: First 7 Program: Second 5 Program: Third 8";

我知道我可以算上所有" 0"使用" substr_count"出现,但我如何在文本之前计算特定的零组" Program"?

3 个答案:

答案 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',所以从下一个零范围的偏移量开始。

substr_count Documentation