Php 使用文本分隔符计算字符串中的特定字符数

Php 使用文本分隔符计算字符串中的特定字符数,php,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"; 我知道我可以使用“substr\u count”来计算所有“0”事件,但如何在文本“Program”之前计算特定的零组?substr\u

我有字符串:

$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";

我知道我可以使用“substr\u count”来计算所有“0”事件,但如何在文本“Program”之前计算特定的零组?

substr\u count
可以提供一个最大长度来计算。只需使用
strpos
查找“Second”的索引,并计算该索引的0。您还可以为“substr_count”提供一个偏移量,因此从下一个零范围的偏移量开始


可以为substr\u count
提供最大计数长度。只需使用
strpos
查找“Second”的索引,并计算该索引的0。您还可以为“substr_count”提供一个偏移量,因此从下一个零范围的偏移量开始

可以做到这一点:

$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
Program: First 7 Program: Second 5 Program: Third 8
string(74) "Program: First 7 Program: Second 5 Program: Third 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;
输出:

0
7
5
8
Program: First 7 Program: Second 5 Program: Third 8
string(74) "Program: First 7 Program: Second 5 Program: Third 8" 
可以这样做:

$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
Program: First 7 Program: Second 5 Program: Third 8
string(74) "Program: First 7 Program: Second 5 Program: Third 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;
输出:

0
7
5
8
Program: First 7 Program: Second 5 Program: Third 8
string(74) "Program: First 7 Program: Second 5 Program: Third 8" 

这将正好输出您需要的内容。它并没有那么漂亮,你可能会用谷歌找到一个更好的解决方案,但我刚刚想到:

<?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);


?>

不管怎样,如果您获得了此类数据,您可能会在创建该数据的地方找到更好的解决方案

这将正好输出您需要的内容。它并没有那么漂亮,你可能会用谷歌找到一个更好的解决方案,但我刚刚想到:

<?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);


?>

不管怎样,如果您获得了此类数据,您可能会在创建该数据的地方找到更好的解决方案

不错,但它不会保存程序:第一,第二,当前输出。你的问题是“我如何在文本程序之前计算特定的零组”,然后我想知道零的数量,知道替换。是的,但在我看来@Xatenev的响应更好。不错,但它不会保存程序:第一,第二个是当前输出。您的问题是“如何在文本程序之前计算特定的零组”,然后我想知道零的数量,知道替换。是的,但在我看来@Xatenev的响应更好。@user2337706我希望您理解那里发生了什么,所以下次你可以自己写:)是的,我会分析。我不喜欢打扰别人,但有时我可以花几个小时写这么简单的代码)@user2337706我希望你能理解那里发生了什么,这样你下次可以自己写:)是的,我会分析它。我不喜欢打扰别人,但有时我可以花几个小时写这么简单的代码)