我不知道如何处理这个问题 - 我有一个有玩家的清单,例如
- 播放器
- Coco [infi]
- booo #team
- 有人
- Dabadee #team
- goliat #team
- stratder [infi]
显然,Coco
和stratder
有一个团队标记[infi]
和booo
,goliat
和Dabadee
都有一个名为{{1的标记}}
我想列出不同的标签,但标签可以是#team
<tag>
#tag
或任何人(游戏)家族标签(我正在提取播放数据)来自服务器)。
我不确定如何做到这一点,我能做的最好的事情是:
[tag]
但是,如果我为空间爆炸,则会跳过" "
。
有更好的想法吗?
答案 0 :(得分:2)
这看起来像正则表达式的工作。你可以有一定数量的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);
}