Буферизация вывода PHP с файлом шаблона приводит к разрывам строк и пустым абзацам

Я использую ob_start() и т. Д. Для буферизации некоторого вывода при включении файла шаблона php с кодом HTML. Вот пример файла шаблона:

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

1 ответ

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

$str = str_replace(array("\r", "\n"), '', $str);
Другие вопросы по тегам