如何从视频游戏应用程序中的原始语法中获取@commit标签ID列表

How get get a list of @ mention tag IDs from raw syntax in a video game app?

本文关键字:获取 语法 @commit 标签 列表 ID 原始 视频 游戏 应用程序      更新时间:2023-09-26

我正在制作一个视频游戏应用程序,它可以让用户@提及存储在数据库中的游戏,类似于在Twitter上@提及用户或在Facebook上@提及任何内容。

当用户在发表评论时键入"@"时,JavaScript会触发一个下拉框。用户从下拉框中选择一个游戏,当他选择它时,它会进入文本区域。每个@提及都以@[id-slug:Game Title]的格式存储在内部。当用户按下"发布"时,评论会被发送到服务器,服务器必须对其进行处理,以确定哪些游戏被@提及。发送到服务器的原始文本示例如下:

@[6816-nes-super-mario-bros:Super Mario Bros.] is a great game! @[6821-nes-super-mario-bros-3:Super Mario Bros. 3] is fun too!

服务器必须能够知道用户在帖子中提到了哪些游戏,这样它就可以适当地将条目添加到comment_game表中,这样这些评论也会显示在相应的游戏页面上。因此,在上面的例子中,我需要一些方法来解析这个评论,以确定用户已经@提到了游戏ID 6816和6821。只需获得游戏ID就足够了。然后PHP就可以知道用户@提到了什么游戏。

我尝试过多种解决方案,但似乎都不起作用。我不确定最好的解决方案是使用正则表达式,还是使用其他解决方案。

<?php
    $comment = '@[6816-nes-super-mario-bros:Super Mario Bros.] is a great game! @[6821-nes-super-mario-bros-3:Super Mario Bros. 3] is fun too!';
    preg_match_all('/@'[([0-9]+)/', $comment, $users);
    print_r($users);
?>