Как проверить содержит ли переменная какой-то текст PHP?

Рейтинг: 0Ответов: 1Опубликовано: 16.02.2023

Задача такая, есть изображение и видео:

<img src="<?php echo $catalogProd['prod-img']; ?>" alt="<?php echo $catalogProd['prod-descr']; ?>">
<video class="video" playsinline="" autoplay="" loop="" muted="">
    <source src="<?php echo $catalogProd['prod-video']; ?>" type="video/mp4">
</video>

Ссылки на них берутся из аминки WordPress с помощью плагина Custom Field Suite. Заказчик хочет вставлять либо изображение, либо видео. Если изображение не вставить в админке, то img src="здесь пусто", но отображается иконка незагруженного изображения, то же самое с видео, только там пустой блок высотой 125px. Я пытаюсь через условие скрыть изображение либо видео следующим образом:

<div class="catalog">

  <?php
  $catalog = CFS()->get('catalog-prod');
  foreach ($catalog as $catalogProd) {
  ?>

    <a href="<?php echo $catalogProd['prod-link']; ?>" class="prod">
      <img src="<?php echo $catalogProd['prod-img']; ?>" alt="<?php echo $catalogProd['prod-descr']; ?>">
      <video class="video" playsinline="" autoplay="" loop="" muted="">
        <source src="<?php echo $catalogProd['prod-video']; ?>" type="video/mp4">
      </video>
      <p class="slug-ali">Aliexpress</p>
      <p class="prod-descr"><?php echo $catalogProd['prod-descr']; ?></p>
      <p class="prod-price"><?php echo $catalogProd['prod-price']; ?></p>
      <button class="prod-btn"><?php echo $catalogProd['prod-btn']; ?></button>
    </a>

  <?php 
  $prodImg = $catalogProd['prod-img'];
  $prodVideo = $catalogProd['prod-video'];
      echo $prodImg; //если изображение загружено, то выводит ссылку, если нет, то пусто
      echo $prodVideo; // тоже самое
      if ($prodImg == "") { ?>
          <style>
              .prod img{
                  display:none;
              }
          </style>
      <?php }  else { ?>
          <style>
              .prod video{
                  display:none;
              }
          </style>
      <?php } 
       
  }
     ?>


</div>

Но не скрывает, в инспекторе кода display:none; почему-то перечеркнут. Подскажите, что делаю не так?

Ответы

▲ 1Принят

Воспользуйтесь PHP просто для того чтобы не рендерить лишние элементы, если переменные пустые. И не нужно писать никаких костылей с CSS. По-умолчанию в if проверка на пустоту и так сработает. Если по каким-то другим причинам Вам нужно знать, пуста ли строка, то используйте функцию empty(). Убрал Ваше условие с style, и просто обернул элементы в проверки.

<div class="catalog">
    <?php
    $catalog = CFS()->get('catalog-prod');
    foreach ($catalog as $catalogProd) : ?>
        <a href="<?php echo $catalogProd['prod-link']; ?>" class="prod">
            <?php if ($catalogProd['prod-img']) : ?>
                <img src="<?php echo $catalogProd['prod-img']; ?>" alt="<?php echo $catalogProd['prod-descr']; ?>">
            <?php endif; ?>
            <?php if ($catalogProd['prod-video']) : ?>
                <video class="video" playsinline="" autoplay="" loop="" muted="">
                    <source src="<?php echo $catalogProd['prod-video']; ?>" type="video/mp4">
                </video>
            <?php endif; ?>
            <p class="slug-ali">Aliexpress</p>
            <p class="prod-descr"><?php echo $catalogProd['prod-descr']; ?></p>
            <p class="prod-price"><?php echo $catalogProd['prod-price']; ?></p>
            <button class="prod-btn"><?php echo $catalogProd['prod-btn']; ?></button>
        </a>
    <?php endforeach; ?>
</div>