Я использую ob_start() и т. Д. Для буферизации некоторого вывода, включая файл шаблона php с кодом HTML. Heres пример файла шаблона:PHP-буферизация вывода с помощью файла шаблона приводит к разрыву строк и пустым абзацам
<div class="prefix-box__thumb">
<a class="prefix-box__image-link"
href="<?php echo $this->get_product_url(); ?>" title="<?php echo $this->get_product_link_title(); ?>" rel="nofollow" target="_blank">
<img class="prefix-box__image" src="<?php echo $this->get_product_image(); ?>" alt="<?php echo $this->get_product_image_alt(); ?>" />
</a>
<?php if ($this->get_product_rating()) { ?>
<div class="prefix-box__rating">
<?php echo $this->get_product_star_rating(); ?>
<?php if ($this->get_product_reviews()) { ?>
<div class="prefix-box__reviews"><?php echo $this->get_product_reviews(); ?></div>
<?php } ?>
</div>
<?php } ?>
</div>
Как вы можете видеть, что я отступом строки, чтобы сделать его более удобным для чтения для меня как разработчика.
К сожалению, на некоторых сайтах (не на моих серверах, поэтому я не могу их воспроизвести) эти отступы приводят к разрыву строк и пустые абзацы при возврате или, скорее, распечатке результата ob_get_clean.
В качестве примера для разбитого результата:
<a class="prefix-box__image-link" <br="" ... >...</a>
or
<p> </p>
Для разрыва строки я думал об использовании $str = str_replace(array("\r", "\n"), '', $str);
, но я не уверен, если это будет соответствовать, потому что - как я уже писал выше - я не могу воспроизвести неправильно вывода самостоятельно.
Это совершенно непонятно, что проблема, которую вы пытаетесь решить здесь. Вы заявляете, что этот код не приводит к нежелательным результатам для вас, но вы также заявляете, что у вас есть нежелательные результаты (* предположительно не те, которые вы можете воспроизвести сами *). Откуда возникают эти нежелательные результаты? Где код, который их производит? – Sherif
Проблема возникает на веб-сайте одного из моих пользователей плагинов, для меня все работает нормально. И, как я показал в примере фрагмента, в этом случае ссылка сломана, потому что из моего шаблона вверху разрыв строки был преобразован в разрыв, который был вставлен внутри якоря. – flowdee