Как обернуть длинные строки без пробелов в HTML? - PullRequest
67 голосов
/ 12 декабря 2008

Если пользователь вводит длинную строку без пробелов или пробелов, он прервет форматирование, перейдя шире, чем текущий элемент. Что-то вроде:

HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA .............................................. .................................................. .............................................

Я пытался просто использовать wordwrap() в PHP, но проблема в том, что если есть ссылка или какой-то другой допустимый HTML, он ломается.

Кажется, в CSS есть несколько опций, но ни один из них не работает во всех браузерах. См. Перенос слов в IE.

Как вы решаете эту проблему?

Ответы [ 14 ]

0 голосов
/ 11 января 2010

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

Перенос длинных строк с использованием CSS и JavaScript

0 голосов
/ 07 ноября 2009

по предложению Джона код, который я создал:

public static string WrapWords(string text, int maxLength)
    {
        string[] words = text.Split(' ');
        for (int i = 0; i < words.Length; i++)
        {
            if (words[i].Length > maxLength) //long word
            {
                words[i] = words[i].Insert(maxLength, " ");
                //still long ?
                words[i]=WrapWords(words[i], maxLength);
            }
        }
        text = string.Join(" ", words);
        return (text);
    }
0 голосов
/ 12 декабря 2008

Вот что я делаю в ASP.NET:

  1. Разбить текстовое поле на пробелы, чтобы получить все слова
  2. Повторять слова, ища слова, которые длиннее определенной суммы
  3. Вставьте каждые x символов (например, каждые 25 символов).

Я рассмотрел другие способы сделать это на основе CSS, но не нашел ничего, что могло бы работать в разных браузерах.

0 голосов
/ 12 декабря 2008

Я увернулся от проблемы, не исправив правую боковую панель так: P

...