Php 识别组标记
我不知道如何解决这个问题-我有一个球员名单,例如Php 识别组标记,php,algorithm,tags,Php,Algorithm,Tags,我不知道如何解决这个问题-我有一个球员名单,例如 玩家 可可 博奥队 某人 达巴迪队 歌利亚队 斯特拉德[infi] 显然,Coco和stradder有一个团队标签[infi]和booo,goliat和Dabadee有一个名为的团队标签 我想列出不同的标签,但是标签可以是#tag[tag]或任何人(游戏)的氏族标签(我从服务器获取游戏数据) 我不知道该怎么做,我能做的最好的事情是: 分解“ 将分解中所有可能的项添加到数组中 使其仅显示唯一的项目 计算每个字符串在原始玩家列表中找到的次数
- 玩家
- 可可
- 博奥队
- 某人
- 达巴迪队
- 歌利亚队
- 斯特拉德[infi]
Coco
和stradder
有一个团队标签[infi]
和booo
,goliat
和Dabadee
有一个名为的团队标签
我想列出不同的标签,但是标签可以是
#tag
[tag]
或任何人(游戏)的氏族标签(我从服务器获取游戏数据)
我不知道该怎么做,我能做的最好的事情是:
- 分解
“
- 将分解中所有可能的项添加到数组中
- 使其仅显示唯一的项目
- 计算每个字符串在原始玩家列表中找到的次数
[tag]name
将被跳过
有更好的主意吗?这看起来像是正则表达式的工作。您可以拥有一定数量的regexp,然后尝试一个接一个地匹配它们:
/**
* function to return a tag given a playerName
* @param $playerName string: player name, e.g. Coco [teamTag]
* @return array matching syntax (here 'brackets') and tag value (teamTag)
*/
function getTag($playerName) {
// Allowed syntaxes
$tagSyntaxes = array(
'hash' => '/#([\\w\\d]+)$/',
'html' => '/<tag>(.*?)<\/tag>/',
'bracket' => '/[[](.*?)[]]/',
);
// One loop to rule them all
foreach ($tagSyntaxes as $syntaxName => $regexp) {
if (preg_match($regexp, $playerName, $gregs)) {
// First syntax to match wins.
return array(
'syntax' => $syntaxName,
'tag' => $gregs[1])
)
}
}
// Loop exited with no match. Return a "dummy" tag
return array('syntax' => 'none', 'tag' => null);
}
/**
*函数返回给定playerName的标记
*@param$playerName字符串:玩家名称,例如Coco[teamTag]
*@返回数组匹配语法(此处为“括号”)和标记值(teamTag)
*/
函数getTag($playerName){
//容许语法
$tagSyntaxes=array(
'哈希'=>'/#([\\w\\d]+)$/',
“html'=>'/(.*?/”,
'括号'=>'/[[](.*?[]]/',
);
//一个循环来统治他们所有人
foreach($tagSyntaxes as$syntaxName=>$regexp){
if(预匹配($regexp、$playerName、$gregs)){
//第一个匹配wins的语法。
返回数组(
'syntax'=>$syntaxName,
'tag'=>$gregs[1])
)
}
}
//循环已退出,但不匹配。返回“虚拟”标记
返回数组('syntax'=>'none','tag'=>null);
}
您是否遗漏了'/(.*?)
字符串末尾的/
?