Как обрезать текст, который он может вписать в тег блочного типа? - PullRequest
1 голос
/ 31 мая 2011

В моей форме я прошу пользователей ввести текст, а затем, когда они отправляют форму, текст отправляется в мою базу данных.Когда я запрашиваю введенный текст и вставляю его в мою html-страницу, он не помещается в контейнер, вместо этого, если в строке много слов, выводится строка длиной.Я хотел бы знать, как я могу обрезать строку, если ее размер слишком велик, предполагая размер контейнера, в котором она читается.и о!расширить мой запрос: каков наилучший способ обработки ввода пользователя и извлечения его в точно таком же формате ??

Ответы [ 5 ]

2 голосов
/ 31 мая 2011

Если вам нужно «обрезать» текст, вы можете просто использовать substr.

echo substr($string,0,150);

Это сократит вашу строку до 150 символов

@ OP: после прочтения вашего вопроса. Вы имели в виду css?

overflow: hidden;

В любом случае, даже если ваш div настроен на отображение: блок; он не должен показывать горизонтальную полосу прокрутки

Добавление

Проблема с вашей ссылкой в ​​том, что у вашего div есть класс listing с

white-space: pre;

Вы должны изменить его

white-space: normal;
0 голосов
/ 31 мая 2011

Если единственной проблемой, связанной с форматированием, являются новые строки, я бы сказал так:

  1. Пользователь вводит некоторый текст в текстовую область.

  2. Я очищаю текст, то есть я удаляю все новые строки (также если вам нравится удалять табуляции или несколько пробелов).

  3. Сохранять чистый текст в базе данных.

  4. Когда текст будет извлечен, вы выводите его на html-странице, если вы помещаете его в div, вам не нужно беспокоиться, потому что текст сломается сам по себе.

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

Заключение Я не думаю, что ваш запрос на получениеТекст в точно таком же формате - хорошая идея (за исключением того, что у вас есть что-то необычное, иначе вы думаете).Напротив, вы хотите очистить текст, который вставляет пользователь.Надеюсь, я правильно понял, что вы пытаетесь сделать!

0 голосов
/ 31 мая 2011

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

function ShortenText($text,$chars) {
        // Change to the number of characters you want to display
        $orig = $text;
        $text = $text." ";
        $text = substr($text,0,$chars);
        $text = substr($text,0,strrpos($text,' '));

        // Add ... if the text actually needs shortening
        if (strlen($orig) > $chars) {
            $text = $text."...";
        }
        return $text;

}
0 голосов
/ 31 мая 2011

Не уверен, в чем проблема.Если вы укажете максимальную длину текстового ввода, у вас всегда будет установлена ​​максимальная длина вашего текста.В противном случае вы можете использовать substr ($ yourstring, 0, your_set_length).Однако просто установка maxlength имеет больше смысла.

0 голосов
/ 31 мая 2011

Это не идеальное решение, но вы можете сделать это следующим образом:

$string = 'yourstring';

if (strlen($string) > TheMaxSizeOfYourString) {
    $string = substr($string, 0, TheMaxSizeOfYourString-3);
    $string .= '...';
}

Это не идеально, так как фактическая ширина вашей строки зависит от используемого вами шрифта.

...