Обтекание текстовой области не работает - PullRequest
1 голос
/ 15 ноября 2009

у меня

$ad_text=wordwrap(nl2br($_POST['annonsera_text']), 45, '<br />\n');

Есть идеи, почему вышеприведенное отображается в длинной строке?

Форма method='POST' и enctype='multipart/form-data' и textarea wrap='hard'.

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

UPDATE:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\nl
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

ВЫХОДЫ это:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Использование функции wordwrap в PHP.

Похоже, не имеет значения, установил ли я wrap="hard" в HTML.

Ответы [ 3 ]

1 голос
/ 15 ноября 2009

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

echo $ad_text = $_POST['annonsera_text'];
echo $ad_text = nl2br($ad_text);
echo $ad_text = wordwrap($ad_text, 45, '<br />\n');
0 голосов
/ 15 ноября 2009

Входная строка

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\nl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

содержит 4 различных символа: "a", "\ n", "l" и "".

Я бы ожидал, nl2br() создаст этот вывод

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />\nl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Тогда вызов wordwrap делает это:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br<br />\n/>\nl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Это плохо сформированный HTML. В браузере плохие теги br не действуют. И новые строки не влияют на макет, поэтому он выглядит как строка «а». Я не могу объяснить, куда уходит твое «я».

В вашем вызове wordwrap строка замены указана в одинарных кавычках, поэтому '\ n' - это обратный слэш из двух символов и n. Используйте двойные кавычки, чтобы развернуть переход в новую строку: измените '<br />\n' на "<br />\n"

Вы также можете пропустить вызов nl2br или wordwrap, в зависимости от того, что вы хотите.

Кстати, вы пытались установить четвертый аргумент $cut в true при вызове wordwrap()?

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

В этих случаях вы должны указать четвертый параметр функции wordwrap(), который указывает ей разбивать слова, если они больше необходимой ширины:

$ad_text=wordwrap(nl2br($_POST['annonsera_text']), 45, '<br />\n', true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...