我在使用 PHP 编写的应用程序时遇到了困难。该应用程序的目的是一个支持触摸屏的开源学习游戏(使用 jQuery mobile)。游戏运行良好,使用 strcasecmp() 将数据库中的条目与所选答案进行比较(用户从不自己输入数据,他们只从选项中进行选择,因此不存在输入清理问题,因为选项直接来自数据库)。但是,当我添加包含特殊字符(例如 Ω 和 β)的功能时,strcasecmp() 不再起作用。自然地,我假设该函数无法比较这些符号。经过深入研究,我尝试了 preg_match 和 mb_ereg_match,虽然它们在常规问题上工作得很好,但同样,它们不能正确地将问题与其中的特殊字符匹配。马上,
$selAnswer = $_POST['mainanswer'];//asign from POST form
if (mb_ereg_match($selAnswer, $_SESSION['right']) == TRUE) //if the choice matches the right answer
{
//do right answer operations
}
else //if the question does not match
{
//do wrong answer operations
}
同样,它适用于常规字符串,但不适用于特殊字符。我能做些什么来成功匹配这些字符吗?其中一个用例是化学课,他们肯定需要能够添加特殊字符,例如 omega 和 beta 等。我感谢任何人可能提供的任何帮助。
更新:
由于发布整个游戏代码会非常长,供大家参考,大致流程是这样的:一个简单的HTML表单向MySQL数据库提交问题。特殊字符是使用自定义版本的 TinyMCE 插入的,该版本只允许设置粗体、下划线、斜体和特殊字符的格式。它在数据库中的外观示例如下:
β is the right answer
因此,一旦数据进入数据库,游戏代码就会随机选择一个问题,并给出一个正确答案和四个错误答案。如果所选答案与数据库答案匹配,则给予一分。该游戏通过 jQuery mobile 进行了触摸友好,但这是代码的唯一特殊之处。其余的只是用 TextWrangler 手写的通用 PHP/JS。