PHP中的特殊字符(如omega和beta)字符串匹配
Special character (like omega and beta) string matching in PHP
我使用PHP编写的应用程序有困难。该应用程序的目的是一个支持触摸屏的开源学习游戏(使用jQuery移动)。游戏使用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手机制作的,但这是代码的唯一特别之处。其余的只是用TextWrangler手工编写的通用PHP/JS。
我试过了:
<?php
$special = "Ω and β";
$right_answer = "Ω and β";
//Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.
if (strcasecmp($special, $right_answer) == 0) {
echo "You're right!";
} else {
echo "Sorry, try again";
}
?>
得到了这个
你是对的!
我错过了什么吗?
试一试:
<?php
$database_answer = "Ω and β"; // <-- $grap correct answer from from mysql
$user_answer = "Ω and β"; // <-- make $user_answer the correct answer
// display hex representation of both strings
printf("%s<br>%s", bin2hex($database_answer), bin2hex($user_answer));
?>
- 检索$database_answer从您的数据库(mysql?)的正确答案
上面的代码应该显示完全相同的十六进制字符串,如果不是,你有编码问题的地方。您可以首先确保数据库的字符集设置为UTF-8。
如果您的数据库是这样设计的:
QuestionNumber | Answer
-------------------------------
1 | 3
2 | 1
3 | 4
4 | 2
5 | 4
HTML: <select name="question1">
<option value="1">α</option>
<option value="2">β</option>
<option value="3">γ</option>
<option value="4">Ω</option>
</select>
这样,只有数字'4'被发送到服务器,而不是答案'Ω'。那么你只需要比较数字。
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用RegExp查找url中的字符
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 允许在文本框中使用某些字符
- 根据页面的位置突出显示文本中的字符
- 元素的内容必须由格式正确的字符数据或标记组成
- 如何将字符串拆分为字符,但在javascript中保留空格
- 使用Google Maps API向标记添加多个字符
- 处理JSON字符串会导致JavaScript错误
- 单元格的工具提示或标题不显示超过2000个字符
- javascript替换换行符和特殊字符
- angularjs删除动态形式元素中的特殊字符
- 元素名称上带有短划线 (-) 字符的 Json 对象
- 无法呈现js unicode字符“u1F310”
- 从指定范围创建字符数组
- PHP中的特殊字符(如omega和beta)字符串匹配