Я пытаюсь обернуть строку, введенную пользователем, в двойные кавычки для вывода, но я хочу убедиться, что я не получаю двойные двойные кавычки с обеих сторон строки. Например, если пользователь отправляет сообщения
"Здравствуйте"
Я не хочу превращать его в
""Здравствуйте""
Я могу сделать это довольно легко, используя код ниже, однако я обеспокоен тем, что это может затормозить, если я перебираю множество строк.
$string = '"'.trim($string,'"').'"';
Если у кого-то есть лучший способ сделать это, это будет здорово. Точно так же, если кто-нибудь сможет подтвердить, что мой путь в порядке, я буду счастлив.
благодаря
Именно так я решил бы эту проблему. Стоит только беспокоиться о медленности кода, если у вас есть проблема с медленным приложением, и вы можете отследить его до инструкций trim.
Хорошо известная цитата программирования: « Преждевременная оптимизация – это корень всего зла» – см. Статью по Википедии, связанную для этого.
Внимательно изучите, что должно произойти во всех случаях. (используя [] в качестве котировок для удобочитаемости)
Вы сказали, что вы делаете для [«Привет»], но что вы делаете для [Я сказал «Привет», панк]? Вы по-прежнему лишаете введенные пользователем котировки или удаляете их? Или, может быть, сделайте еще один шаг и замените одинарные кавычки на двойные кавычки … но тогда вам придется учитывать случаи, когда пользовательский ввод содержит как одиночные, так и двойные кавычки! Как насчет того, когда пользователь вводит «грамматически неправильный» текст, например [«Привет» (без закрытия цитаты!).
Лучший способ убедиться, что вы делаете это правильно, – сделать тестовый пример для каждого случая края, о котором вы можете подумать, и убедиться, что предлагаемое решение действительно делает то, что ожидается.
Если фактическая причина этого требования – [я беру ввод пользователя в какой-то момент, а затем повторно показываю его в другой точке и не хочу показывать им такие глупые данные, как ["" data "]] , вы, вероятно, просто захотите только удалить двойные кавычки с начала или конца входной строки, так как удалите их из средних винтов с данными пользователя.
Если ваша цель состоит в том, чтобы четко различать их ввод и текст, которые они не вводили, подумайте о том, чтобы использовать другие средства выделения, вместо кавычек. Поэтому вместо [вы ввели «данные»], вы можете отобразить [введенные данные ] или [вы ввели: данные], которые полностью исключают эту проблему.
Лично я предлагаю зачистить котировки на входе. Что бы сделать это быстрее, если вы разрешаете вводить или сохранять кавычки, вы всегда будете зацикливаться на использовании if
/ else
перед их отображением.
Очевидно, что вам все равно необходимо выполнить проверку работоспособности входных данных независимо от того, в какой системе вы оказались.
Общепринятой практикой является использование кавычек для представления цитаты в цитате, если вы хотите, чтобы ваши пользователи писали:
и она сказала "эй хо"
, к которому вы могли бы обратиться:
Пользователь: «И она сказала« эй хо »
Я сделал это так:
function quotize(&$string) { if (empty($string) || is_null($string)) { return; } $char = '"'; if ($string[0] != $char) { $string = $char . $string; } if (substr($string, -1) != $char) { $string .= $char; } return; }