2015-12-19 2 views
-1

Я использую 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);, но я не уверен, если это будет соответствовать, потому что - как я уже писал выше - я не могу воспроизвести неправильно вывода самостоятельно.

+0

Это совершенно непонятно, что проблема, которую вы пытаетесь решить здесь. Вы заявляете, что этот код не приводит к нежелательным результатам для вас, но вы также заявляете, что у вас есть нежелательные результаты (* предположительно не те, которые вы можете воспроизвести сами *). Откуда возникают эти нежелательные результаты? Где код, который их производит? – Sherif

+0

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

ответ

0

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

$str = str_replace(array("\r", "\n"), '', $str);