PHP-гнездовая переменная в эхо-строке, которая содержит тег HTML в конце

нужна помощь php

Мне нужно добавить оператор if внутри тега html

if( get_field($image) ): ?><img src="<?php the_field($image); ?>" alt="" /><?php endif; 

Я хочу добавить утверждение if внутри тега html ниже вместо img и a, возможно ли это?

  echo "<$html class=\"" .(!empty($this->options['class']) ? trim($thesis->api->esc($this->options['class'])) : ''). "\"> // I want this if statement to work inside here...how do i escape the html to make it work? if( get_field($image) ): ?><img src="<?php the_field($image); ?>" alt="" /><?php endif; <img src=\"" .get_field($image)."\" alt=\"\" /> <a href=\"".get_field($download). "\"> Download File</a> </$html>\n"; 

Помещение PHP-операторов в HTML

Во-первых, не используйте инструкцию echo чтобы выплескивать огромные куски HTML, поэтому код очень сложно поддерживать и повторно использовать. Разве это не так?

 <a href='<?php echo $some_variable; ?>'> 

Использование PHP-логики в блоках HTML (общее)

Вы ищете что-то вроде этого:

 <?php if(!empty($image)): ?> <img src='<?php echo $image; ?>' alt='Some Stuff'> <?php endif; ?> 

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

 <?php echo empty($image) ? null : "<img src='$image' alt='Some Stuff'>"; ?> 

Это будет отражать тег изображения, если $image имеет значение, и ничего, если это не так.

Давайте очистим и исправьте код в исходном сообщении …

Ваш код выглядит так, будто он намеренно запутался, чтобы запутать людей. Научитесь отступать, не вставляйте логику в логику. Приоритет читаемости, и ваш код будет намного проще в обслуживании.

 if(!empty($text)) echo "<$html class=\"" .(!empty($this->options['class']) ? trim($thesis->api->esc($this->options['class'])) : ''). "\"> <img src=\"" .get_field($image)."\" alt=\"\" /> " .get_field($text)." <a href=\"".get_field($download). "\"> Download File</a> </$html>\n"; 

Здесь многое можно улучшить. Прежде всего, отделить логику от логики вывода как можно больше:

Бизнес-логика

 <?php // This should be in another FILE ideally... $this->divClass = empty($this->options['class']) ? null : trim($thesis->api->esc($this->options['class'])); $this->image = the_field($image); $this->download = the_field($download); $this->text = // I dont know how you're setting this. ?> 

Логика отображения

Затем потеряйте функции get_field , добавьте null возврат в the_field если он не найден, так что у вас есть более чистый код. Тогда просто используйте что-то вроде этого:

 <?php if(!isset($this->text)): ?> <div class='<?php echo $divClass; ?>'> <?php if(!isset($this->image) && !isset($this->download)): ?> <img src='<?php echo $this->image; ?>'> <a href='<?php echo $this->download; ?>'>Download File</a> <?php endif; ?> </div> <?php endif; ?> 

Теги <?php> помогут вам, они позволят вам чисто интерполировать PHP-код с кодом HTML так, чтобы большинство языков приходилось прибегать к уродливым внешним tempating. Используйте их, сохраняйте свой код читабельным и понятным, не используйте ярлыки, потому что они вернутся, чтобы укусить вас.