У меня есть сценарий, который печатает содержимое файла в текстовом поле, чтобы внести изменения в содержимое файла, а затем обновить его.
$file_content = file_get_contents($filename);
if (isset($_POST['text']))
file_put_contents($filename, $_POST['text']);
<textarea name = "text" wrap = "hard">
echo htmlspecialchars($file_content, ENT_QUOTES, 'UTF-8');
</textarea>
Чтобы сделать форму редактирования текстового поля «лучше», я добавил атрибут wrap = "hard"
, чтобы содержимое файла можно было просматривать без горизонтальной прокрутки.
Проблема этого атрибута заключается в том, что при переносе по словам предложения, которое находится в одной строке: после обновления файла с помощью формы перенос слов действует также и в содержимом файла, добавляя новую строку \n
в предложение с переносом.
Есть ли способ этого избежать?
Хм, я не думаю, что вы сможете различать новые строки пользователя и автоматические новые строки. Я имею в виду, что даже если вы onsubmit()
удалите атрибут wrap
, если есть какие-то изменения, я не думаю, что будет достаточно осведомленности для восстановления данных.
Почему вы используете жесткую пленку? Это, в частности, добавляет новые строки к отправленным данным, когда они достигают ширины столбца текстового поля. Есть ли причина, по которой вы не можете сделать это с wrap = "soft"
? Сделайте текстовое поле достаточно большим, а затем просто живите с людьми, которым нужны их данные в одной строке.
overflow-x: hidden;
, вероятно, подойдет, если вы ищете метод CSS во время вывода в браузер. В любом случае лучше справиться с этим с помощью CSS, чем возиться с файлом.
Я порекомендую style = "resize: vertical;
и просто позабочусь о том, чтобы вы как можно больше использовали атрибуты cols
и rows
.
Это позволит избежать создания нежелательных символов новой строки и исключит возможность горизонтальной прокрутки.
Я сделал быстрый / грязный тест на https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_textarea_wrap
Как прокомментировал @Funk, overflow-x: hidden
- еще один допустимый метод стилизации.
Но эй, по умолчанию текстовое поле все равно оборачивает это за вас. Применяются ли к вашему элементу другие стили, о которых вы нам не рассказали? Ограничено ли текстовое поле другими элементами?
Давайте посмотрим, как вы настроили эту проблему в демонстрации. Мы хотим увидеть некоторые образцы данных и то, что вы хотите получить в качестве желаемого результата.