У меня возникли трудности с приложением, которое я пишу, используя PHP. Цель приложения - обучающая игра с открытым исходным кодом с поддержкой сенсорного экрана (с использованием jQuery mobile). Игра отлично работала с strcasecmp(), сравнивая записи в базе данных с выбранными ответами (пользователи никогда не вводят данные сами, они выбирают только выбор, поэтому нет проблемы с санитаризацией, поскольку выбор поступает непосредственно из базы данных). Однако, когда я добавил возможность включать специальные символы, такие как Ω и β, strcasecmp() больше не работал. Естественно, я предположил, что функция не сможет сравнивать такие символы. После интенсивных исследований я попробовал preg_match и mb_ereg_match, и пока они работали нормально для регулярных вопросов, опять же, они не будут правильно отвечать на вопросы со специальными символами в них. Прямо сейчас, вот что я должен сравнить выбранный выбор с записью базы данных:Специальный символ (например, omega и beta) соответствие строк в PHP
$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
}
Так опять же, он прекрасно работает с регулярными строками, но не со специальными символами. Есть ли что-нибудь, что я могу сделать, чтобы успешно совместить эти персонажи? Один из вариантов использования - это класс химии, и им обязательно нужно будет добавлять специальные символы, такие как омега и бета и т. Д. Я ценю любую помощь, которую кто-либо может дать.
UPDATE:
С проводкой весь код игры будет очень долго, для справки каждого, общий процесс заключается в следующем: простая форма HTML представляет вопросы в базе данных MySQL. Специальные символы вставляются с использованием настраиваемой версии TinyMCE, которая позволяет форматировать полужирный, подчеркивающий, курсив и специальные символы. Пример того, что она выглядит в базе данных заключается в следующем:
β is the right answer
Таким образом, после того, как данные в базе данных, код игры выбирает случайный вопрос и представляет один правильный ответ и четыре неправильно. Если выбранный ответ и ответ базы данных совпадают, им присваивается точка. Игра сделана с сенсорным интерфейсом jQuery mobile, но это единственная особенность в коде. Остальное - это всего лишь PHP/JS, написанный в TextWrangler.
Думаю, я мог бы видеть, что происходит не так. Я попробовал свой код, и он сработал, но мой текстовый редактор (TextWrangler) предупредил меня, что некоторые символы не будут сохранены, и что мне пришлось переключиться на UTF-8. Итак, я позволил этому изменить это и загрузить его на мой хост, и, конечно же, он работает так же, как и ваш. Я попытался преобразовать свой PHP-файл (код выше) в UTF-8, но совпадение все еще не срабатывало корректно. Возможно, мне нужно преобразовать весь проект. Есть ли какой-либо конкретный способ, которым я должен это сделать, помимо использования текстового редактора для этого? Кроме того, я публикую, как моя программа работает ниже. – user2264570