我有一个字符串:
$string = "[Rank 10] Carlos_Regenz [Rank 9] Anthony_Woods [Rank 9] Habib_Merkel [Rank 9] Garry_Brian"
我需要计算它(根据我的示例):
$rank10 = 1;
$rank9 = 3;
如果我没记错的话,可以通过preg_replace
完成,但是我还没有研究过。
另一个例子:
$string = "[Rank 10] Carlos_Regenz [Rank 10] Anthony_Woods [Rank 10] Habib_Merkel [Rank 9] Garry_Brian"
输出:
$rank10 = 3;
$rank9 = 1;
答案 0 :(得分:0)
在您编辑帖子之前,我已经看到了该帖子,因此可以用新行将字符串分隔开,对吗?
如果方括号(])不是有效的名称,则可以在此处拆分,然后在单词“ Rank”上再次拆分,然后修剪剩余的字符串以获取数字。然后使用如下检查创建一个数组:
if (isset(array[RANK_NUMBER])){
array[RANK_NUMBER] += 1;
}else{
array[RANK_NUMBER] = 1;
}
使用正则表达式可以使代码更短,但是比进行拆分和修剪要慢
答案 1 :(得分:0)
在右括号之前查找任何数字序列
preg_match_all('/\d+\]/', $input, $ranks);
然后计算发现的每个数字的数量。
$ranks = array_count_values(reset($ranks));