将使用PHP生成的html内容存储到变量中

时间:2016-06-14 20:52:14

标签: php html wordpress variables store

我有一些与HTML混合的PHP代码,我需要将其存储到变量中,但我无法弄清楚我该怎么做。当执行此代码时,从调用函数并完美运行的短代码调用.PHP代码呈现HTML并显示来自数据库的信息,但现在我需要将结果(this html divs boxes with information from the database)存储到变量中命令将此变量发送到wordpress中可以更新页面的函数。当我尝试它时,有一个错误,说回声没有被指出。我知道这个变量里面没有php代码,所以我怎么能这样做?将结果存储到变量?

任何建议都会非常苛刻 提前谢谢你:

$ultimosProyectosHome+="
echo '<div class="cont-proyectos">';
echo '<div style="text-align:center;"><a href="'. $url_actual .'"?      page_id="'. $id_paginaFicha .'" target="_blank">';if($pregunta6Valor!=""){echo '<img src="http://www.xxx.xx/xxx/xxx/'.$pregunta6Valor.'" alt="Cover"></a></div>';} else{echo '<img src="'.$imgDesafio.'" alt="Cover"></a></div>';}
                            echo '<h3>';if($pregunta2Valor != ""){ echo $pregunta2Valor;}else{echo $Nodefinido;}echo'</h3>';

                             echo'<a href="'. $url_actual .'"?page_id="'. $id_paginaFicha .'" target="_blank">';
                                    echo'<h4>';if($pregunta1Valor != ""){ echo $pregunta1Valor;}else{echo $Nodefinido;} echo'</h4>';
                                echo'</a>';                                    
                                echo'<p>'; if($pregunta3Valor != ""){ echo getSubString($pregunta3Valor,198,$id_paginaFicha);}else{echo $Nodefinido;} echo'</p>'; 

                                echo'<div class="redesSocialesTLP" id="redes">';
                                    echo'<a href="https://twitter.com/intent/tweet?url="'. $url_client .'"?page_id="'. $id_paginaFicha .'"&text="'. $pregunta1Valor .'" target="_blank">';

                                        echo'<i class="fa fa-twitter fa-2x"></i>';
                                    echo'</a>';


                                    echo'<a href="https://www.facebook.com/sharer/sharer.php?u="'. $url_client .'"?page_id="'. $id_paginaFicha .'" target="_blank">';

                                        echo'<i class="fa fa-facebook fa-2x"></i>';
                                    echo'</a>';

                                    echo'<a href="https://plus.google.com/share?url="'. $url_client .'"?page_id="'. $id_paginaFicha .'" target="_blank">';

                                        echo'<i class="fa fa-google-plus fa-2x"></i>';
                                    echo'</a>';
                                echo'</div>';
                            echo'</div>';

“;

2 个答案:

答案 0 :(得分:2)

更新

您的代码可能会受益于以下答案,但您正在做一个不同的,更危险的事情。您有一大堆HTML和PHP,并希望执行来存储其结果。为此,您需要eval()之类的内容。或者等效地,您可以将代码写入具有不可知名称的临时PHP文件,然后将其重新包含在脚本中,同时将其包装在输出缓冲中。

我已经看到它使用&#34; sandbox&#34;服务器权限有限,但实施起来很复杂。

危险取决于代码的来源。如果其他人可以修改它,那么他将能够在您的服务器上执行任意代码,您肯定希望避免这种代码。

出于这个原因,已经开发了一些模板语言 - 你可以 例如,我想查看Twig

否则,您现在可以:

$bunch = "<BUNCH OF MIXED CODE FROM ABOVE>";

ob_start();
try {
     eval($bunch);
} catch (\Exception $err) {
     print "There has been an error.";
}
$ultimosProyectosHome += ob_get_clean();

返回&#34;将混合输出存储到变量&#34;

正确方法

 $html = '';
 ...
 // Remove all occurrences of this
 echo "Something";
 // and this
 echo "<br />";
 // and write it like this instead.
 $html .= 'Something';
 $html .= '<br />';

如果您有生成输出的函数,这可能会变得很尴尬。您必须重写它们以返回输出(就像上面一样,以

结束)
 return $html;

然后无论你在哪里

 callToFunction(parameters);

你将用

进行重构
 echo callToFunction(parameters);

然后,进一步重构它以阅读

 $html .= callToFunction(parameters)

迭代。

懒惰的方式

使用output buffering。每当你想要调试它时,一个很好的方法来记忆内存,失去对你的脚本的控制,并玩快乐的地狱(除非你使用Xdebug,但为什么一开始就做懒惰的事情?)。

 ob_start();
 ...
 $html = ob_get_clean();

答案 1 :(得分:0)

您正在寻找的是输出缓冲。

在回复您的内容之前致电ob_start();,然后在结束时:

$content = ob_get_clean();

这两个函数之间输出的所有内容都将存储在$content

PHP manual还提供了有关这些功能的更多信息以及其他选项。

请记住,输出缓冲通常应该是最后的手段 - 不要在任何地方都这样做太舒服了!

顺便说一句,您可以通过结束PHP块echo并在完成后再次启动?>来避免对<?php的所有调用。