Php аккуратные и текстовые области

Я использую tidy, чтобы очистить и отформатировать вывод HTML, сгенерированный механизмом веток шаблона.

Я использую следующую конфигурацию для Tidy:

$config = array('indent' => TRUE, 'output-html' => TRUE, 'wrap' => 0);

Все работает хорошо и хорошо, за исключением тех случаев, когда мы добираемся до textareas.

Вот неочищенный фрагмент:

<textarea id="words"
         rows="10"       cols="50"                  >sdfds</textarea>

Хотя форматирование очень запутанное, в текстовой области выводится правильное значение: "sdfds" без пробелов до или после.

Это очищенный формат после использования tidy:

                <textarea id="words" name="words" rows="10" cols="50" title="prompt">
sdfds
</textarea>

Как можно видеть, разметка теперь намного аккуратнее, но Tidy ввел перенос строки после "sdfds", что означает, что курсор теперь указывает на строку после "sdfds" при просмотре в браузере.

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

<textarea id="words" name="words" rows="10" cols="50" title="prompt">sdfds</textarea>

Кто-нибудь имел дело с этим вопросом раньше? Если так, как я могу привести в порядок не вводить эти пробелы для тега textarea?

4 ответа

Если sdfds выходит с php, вам нужно будет добавить еще один параметр конфигурации.

 $config = array('indent' => TRUE, 'output-html' => TRUE, 'wrap' => 0, 'wrap-php' => 0);

Обтекание беспокоит только HTML, и любые операторы PHP обрабатываются как новая строка. Для получения дополнительной информации о параметрах конфигурации вы можете посетить: http://tidy.sourceforge.net/docs/quickref.html

Tidy может иногда быть "грязным" и требует дальнейшего уточнения с помощью rexep, вот обходной путь, который поместит курсор на ту же строку в конечном выводе, поэтому удобство использования не пострадает. Просто запустите ваш HTML-код:

$subject = preg_replace('%(\r\n|\n)(?=</textarea>)%sim', '', $subject);

Когда вы используете indent => true, вы получите путаницу с Техасом. Это приводит в порядок, потому что даже значение textareas с отступом. Если вы хотите, чтобы ваши текстовые поля выглядели правильно, вы можете просто установить indent => false. Это приведет в порядок ваш HTML, но также оставит текстовое поле с тем же значением после применения tidy. Я видел, что есть некоторые исправления, которые решают проблему, но затем вы должны скомпилировать tidy самостоятельно. Вы также можете сделать это с PHP, но затем вы убираете порядок.

Просто используйте функцию обрезки для текстовой области. И вы получите то, что ищете

Другие вопросы по тегам