#php #string
#php #строка
Вопрос:
Я пишу приложение для геометрии, которое включает доказательства. Основной поток прямо сейчас заключается в том, что пользователь вводит ответ, и эта строка ответа сравнивается с «правильной» строкой ответа. Приложение сейчас находится на ранних стадиях, но я уже вижу, что некоторые функции приложения потребовали бы меньше кода, если бы я нашел правильную функцию php. Например, в многоступенчатом доказательстве предположим, что на одном шаге многоступенчатого геометрического доказательства ответ в базе данных:
AB ≅ AC //(as AB amp;cong; AC)
PHP-файл, который обрабатывает это, обрезает все пробелы с помощью trim
и str_replace
. Пользователь, который вводит все следующее в качестве ответа, будет правильным:
AB amp;cong; AC
ABamp;cong;AC
AB amp;cong;AC
ABamp;cong; AC
Однако, несмотря на то, что следующее было бы правильным в реальном мире, мой php-файл (изначально, до того, как я внес изменения) считал следующее «неправильным»:
AC amp;cong; AB //and all permutations missing whitespace
Теперь я использую комбинацию strpos
, stripos
, strlen
, и substr
для учета асимметрии эквивалентных ответов (например, A= B совпадает с B = A ), но это добавляет много кода.
Есть ли в php какая-либо строковая функция, которая меняет местами подстроки. То есть, учитывая 2 строки следующим образом:
$AnswerString1 = "ABamp;cong;AC";
$AnswerString2 = "ACamp;cong;AB";
существует ли какая-либо строковая функция php, которая гипотетически меняет местами подстроки следующим образом:
$SwappedAnswerString2 = swap($AnswerString2, "AB", "AC");
такое, что теперь:
$AnswerString1 = $SwappedAnswerString2;
?
Комментарии:
1. Разнесите () в массив
amp;cong;
, array_walk() или array_map() с помощью trim(), а затем отсортируйте?2. Метод explode() звучит как хорошее предложение, потому что он не только допускает сортировку, но и если пользователь даже не вводит amp;cong; массив explode будет пустым, что послужит еще одной проверкой правильности ответа