Могу ли я хранить html в переменной, если html включает в себя связанное семантическое выражение isset ()?

NikF спросил: 13 июня 2018 в 10:48 в: php

Я даже не знаю, как это задавать, поэтому я приношу свои извинения за любую путаницу.

В основном я пытаюсь сохранить html в hoverHTML, в котором, если $img['socialfb'] содержит значение, он будет конкатенировать элемент <li>, который отображает правильную социальную иконку и если нет, он движется дальше. Это в конечном итоге будет включать другие социальные ссылки ссылок.

$hoverHTML = '<div class="thumbnail-overlay">
                <h2><a href="'.$img['link'].'"> '.$img['data']->post_title.'</a></h2>
                    <ul class="socials">'
                        (isset($img['socialfb']) ? .'<li><a href="'.$img['socialfb'].'"><i class="fab fa-facebook"></i></li>'. : .''.)                          
                   '</ul></div>';
return $hoverHTML;

Возможно ли это? Я все еще очень новичок в php, но пытаюсь модифицировать существующий плагин.

Вот полная функция:

function getHover( $img ){
        $hoverHTML = '';
        if(!$this->hover) return $hoverHTML;
        if($this->hover == 1){
            $hoverHTML .= $this->titleHover;
            if( $this->linkIcon || $this->zoomIcon ){
                $hoverHTML .= '<div class="rbsIcons">';
                if($this->linkIcon && $img['link']) $hoverHTML .= '<a href="@LINK@" '.($img['typelink']?'target="_blank"':'').' title="@TITLE@">'.$this->linkIcon.'</a>';
                if($this->zoomIcon) $hoverHTML .= $this->zoomIcon;
                $hoverHTML .= '</div>';
            }
            $hoverHTML .= $this->descHover;
        }        if($this->templateHover) $hoverHTML = $this->templateHover;         if($hoverHTML){             
            $hoverHTML =  str_replace( 
                array('@TITLE@','@CAPTION@','@DESC@', '@LINK@', '@SOCIALFB@'), 
                array( 
                    $img['data']->post_title,
                    $img['data']->post_excerpt,
                    $img['data']->post_content,
                    $img['link'],
                    $img['socialfb'],
                ), 
                $hoverHTML
            );
        }
        $hoverHTML = '<div class="thumbnail-overlay">
                        <h2><a href="'.$img['link'].'"> '.$img['data']->post_title.'</a></h2>
                        <ul class="socials">'
                            (isset($img['socialfb']) ? .'<li><a href="'.$img['socialfb'].'"><i class="fab fa-facebook"></i></li>'. : .''.)                          
                        '</ul>                      </div>';
        return $hoverHTML;
    }

2 ответа

NikF ответил: 13 июня 2018 в 11:05
Спасибо, ты прав. Оказывается, настоящая проблема заключалась в том, что isset () возвращался true, но не содержал информации, в которой я нуждался, url. Я использовал filter_var($img['socialfb'], FILTER_VALIDATE_URL), и это дало желаемый результат.
Есть решение
Rainmx93 ответил: 13 июня 2018 в 10:58

Итак, да, вы можете, но у вас есть синтаксическая ошибка с изменением $ hoverHTML:

$hoverHTML = '<div class="thumbnail-overlay">
            <h2><a href="'.$img['link'].'"> '.$img['data']->post_title.'</a></h2>
                <ul class="socials">'
                    .(isset($img['socialfb']) ? '<li><a href="'.$img['socialfb'].'"><i class="fab fa-facebook"></i></li>' : '').                          
               '</ul></div>';
return $hoverHTML;