PHP обернуть строку в двойные кавычки - PullRequest
7 голосов
/ 12 октября 2009

Я пытаюсь обернуть введенную пользователем строку в двойные кавычки для вывода, но я хочу убедиться, что я не получаю двойные двойные кавычки с обеих сторон строки. Например, если пользователь публикует

"Hello"

Я не хочу превращать это в

"" Hello ""

Я могу сделать это довольно легко, используя приведенный ниже код, однако я обеспокоен тем, что это может стать медленным, если я перебираю множество строк.

$string = '"'.trim($string,'"').'"';

Если у кого-то есть лучший способ сделать это, это было бы здорово. Точно так же, если кто-нибудь может подтвердить, что мой путь в порядке, я буду счастлив.

Спасибо

Ответы [ 5 ]

10 голосов
/ 12 октября 2009

Именно так я бы решил эту проблему. Стоит беспокоиться о медленном коде, если у вас есть проблема с медленным приложением, и вы можете отследить его до операторов trim.

Хорошо известная цитата по программированию: « Преждевременная оптимизация - корень всего зла» - см. Статью в Википедии, на которой есть ссылки на эту тему

3 голосов
/ 12 октября 2009

Тщательно продумайте, что должно происходить со всеми делами. (используя [] как кавычки для читабельности)

Вы сказали, что вы делаете для ["Hello"], но что вы делаете для [я сказал "Hello", панк]? Вы по-прежнему отбрасываете пользовательские кавычки или удаляете их? Или, может быть, сделать еще один шаг и заменить одинарные кавычки на двойные кавычки ... но тогда вам придется рассмотреть случаи, когда пользовательский ввод содержит как одинарные, так и двойные кавычки! Как насчет того, когда пользователь вводит «грамматически неправильный» текст, например [«Hello] (без закрывающей кавычки!).

Лучший способ убедиться, что вы все делаете правильно, - это создать тестовый пример для каждого крайнего случая, о котором вы можете подумать, и убедиться, что предложенное вами решение действительно соответствует ожидаемому.

Если на самом деле причиной этого требования является [Я беру ввод пользователя в какой-то момент, а затем повторно отображаю его для него в другой точке, и не хочу показывать ему глупо выглядящие данные, такие как ["" data " "]], вы, вероятно, просто захотите удалить только двойные кавычки в начале или конце входной строки, потому что они удаляют их из средних винтов с данными, предназначенными для пользователя.

Если ваша цель просто провести четкое различие между их вводом и текстом, который они не вводили, рассмотрите возможность использования других способов выделения этого текста вместо кавычек. Таким образом, вместо [вы ввели «данные»], вы можете отобразить [вы ввели данные ] или [вы ввели: данные], которые полностью устраняют эту проблему.

2 голосов
/ 12 октября 2009

Лично я бы предложил разделить кавычки на входе. Что касается ускорения, если вы позволите вводить или сохранять кавычки, вы всегда будете застревать с использованием if / else перед их отображением.

Очевидно, вам все равно нужно будет выполнить проверку работоспособности входных данных независимо от того, какую систему вы используете.

0 голосов
/ 04 декабря 2015

Я сделал это так:

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;
}
0 голосов
/ 12 октября 2009

Обычной практикой является использование кавычек для представления цитаты в цитате, если вы хотите, чтобы ваши пользователи писали:
и она сказала "эй хо"

, который вы можете превратить в:
Пользователь: "и она сказала" эй хо ""

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...