У меня действительно есть точный ответ, который вы ищете. Я искал повсюду этот ответ, и никто не предлагал, чтобы он работал идеально. Итак, я придумал решение, попробовал его и был поражен, что оно работает безошибочно!
Гарроу на самом деле был прав (он просто не объяснил это или не принял его полностью). Решение состоит в том, чтобы вместо
поставить один <wbr>
. Просто выполните простой поиск, замените и добавьте тег <wbr>
после каждого
. Работает отлично!
Тег <wbr>
- это малоизвестный тег, поддерживаемый во всех основных браузерах, который говорит браузеру ставить здесь новую строку ТОЛЬКО если это необходимо.
Обновление: я нашел один браузер, который работает не совсем правильно - IE 8! Они на самом деле достали тег <wbr>
! Я решил эту проблему, создав класс, который говорит:
.wbr:before { content: "\200B" }
и вместо замены
на <wbr>
, замените его следующим:
<wbr><span class='wbr'></span>
В PHP это будет выглядеть так:
$text = str_replace(" "," <wbr><span class='wbr'></span>", $text);
Не забудьте также добавить класс.
Очевидно, что это становится немного чрезмерно, заменяя один пробел всем этим, но это работает так, как хотелось, и, поскольку я никогда не видел разметки, она работала для меня.
Если это слишком грязно, другое решение - обменять двойные пробелы на
, за которыми следует нормальный пробел. Это будет чередовать
и обычные пробелы и работает в моих тестах.
В PHP это будет выглядеть так:
$text = str_replace(" "," ", $text);
Надеюсь, это поможет! Я вложил достаточно исследований в это; Я думал, что должен передать это.