Изменить синтаксис, сохранить отступы

Рейтинг: 0Ответов: 2Опубликовано: 10.02.2023
if($news) {
          $Sitemap .="        <priority>{$v[1]}</priority>\n";
          $Sitemap .="        <changefreq>weekly</changefreq>\n";
          $Sitemap .="        <lastmod>".date('Y-m-d', $r['time_upd'])."</lastmod>\n"; 
}

Возможно так

if($news)
    $Sitemap .="        <priority>{$v[1]}</priority>\n        <changefreq>weekly</changefreq>\n        <lastmod>".date('Y-m-d', $r['time_upd'])."</lastmod>\n";

Вопрос в том, возможно ли как во втором случаи, только каждый раз с новой строчки и сохранить отступ в начале чтобы на выходе читабельный вид имел ситемап.

Единственное, вложенность условий может быть 5-10 и тд. Можно сделать так

       if($news)
         $Sitemap .="        <priority>{$v[1]}</priority>
<changefreq>weekly</changefreq>
<lastmod>".date('Y-m-d', $r['time_upd'])."</lastmod>\n";

Тогда в php будет плохой вид для чтения кода...

Ответы

▲ 1Принят

Если вы уже знакомы с composer'ом и ООП, то вы можете использовать какую-нибудь готовую библиотеку для генерации сайтмапа. Проблема отступов в этом случае не актуальна, вы просто заменяете xml на вызовы соответствующих методов.

Такой подход позволит решить задачу максимально быстро (в плане затрат на кодирование), но лишит вас удовольствия разобраться с тем, что умеет php и с какими трудностями сталкиваются крутые разработчики типа автора либы.

▲ 0

Писать XML в PHP-файле — не самая лучшая идея. Гораздо удобнее писать PHP-вставки в XML-файле.

    <priority><?= htmlspecialchars($priority) ?></priority>
    <changefreq>weekly</changefreq>
    <lastmod><?= htmlspecialchars($lastmod) ?></lastmod>

Положите такой код в отдельный файл sitemap.pxml и подключите его через require.

Генерация XML/HTML/XHTML часто вызывает трудности у новичков, поэтому я написал небольшую статью на эту тему. Почитайте.