在 PHP 代码中嵌入 HTML

Posted

技术标签:

【中文标题】在 PHP 代码中嵌入 HTML【英文标题】:Embed HTML in PHP Code 【发布时间】:2014-12-16 20:01:38 【问题描述】:

我必须使用 REST Api 获取数据,并且我的响应是 json。解码后响应在一个数组中,我必须在网页中显示它,以便数组中的每个响应都以特定的显示格式显示(就像 twitter 中的推文以特定的框类型格式显示)。如何循环遍历php中的数组并显示它?我找到的唯一解决方案是使用我所做的 echo 将 html 嵌入到 php 中,但它不起作用。调试器并没有太大帮助。 我错过了什么?

请告知该怎么做。

这是我的代码:

    echo  "<div class="tweet original-tweet js-stream-tweet js-actionable-tweet js-profile-  popup-actionable js-original-tweet my-tweet" data-tweet-id="515380319977893890"data-item-id="515380319977893890"  data-name="" data-user-id="2665607941" data-expanded-footer="&lt;div class=&quot;js-tweet-details-fixer tweet-details-fixer&quot;&gt;&#10;&#10;&#10;&#10;    &lt;div class=&quot;entities-media-container js-media-container&quot; style=&quot;min-height:0px&quot;&gt;&#10;    &lt;/div&gt;&#10;&#10;  &lt;div class=&quot;js-machine-translated-tweet-container&quot;&gt;&lt;/div&gt;&#10;    &lt;div class=&quot;js-tweet-stats-container tweet-stats-container &quot;&gt;&#10;    &lt;/div&gt;&#10;&#10;  &lt;div class=&quot;client-and-actions&quot;&gt;&#10;  &lt;span class=&quot;metadata&quot;&gt;&#10;    &lt;span&gt;11:00 PM - 25 Sep 2014&lt;/span&gt;&#10;&#10;       &amp;middot; &lt;a class=&quot;permalink-link js-permalink js-nav&quot; href=&quot;/status/515380319977893890&quot;  tabindex=&quot;-1&quot;&gt;Details&lt;/a&gt;&#10;    &#10;&#10;&#10;  &lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&#10;&lt;/div&gt;&#10;" data-you-follow="false"data-you-block="false">" ;

    echo "<div class="content">" ;

    echo "<div class="stream-item-header">" ;

    echo "<a  class="account-group js-account-group js-action-profile js-user-profile-link js-nav" data-user-id="2665607941">
           <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/506790785572814848/vdj_UAuZ_bigger.jpeg" >
           <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part> </strong>
           <span>&rlm;</span><span class="username js-action-profile-name" data-aria-label-part><s></s><b>   </b></span>
           </a>" ;

    echo "<small class="time">
          <a  class="tweet-timestamp js-permalink js-nav js-tooltip" title="11:00 PM - 25 Sep 2014" ><span class="_timestamp js-short-timestamp " 
           data-aria-label-part="last" data-time="1411711218" data-time-ms="1411711218000" data-long-form="true">Sep 25</span></a>
          </small>" ;


    echo"</div>";

    echo "<p class="js-tweet-text tweet-text" lang="en" data-aria-label-part="0"> </p>" ;

    echo "<div class="stream-item-footer">";

    echo "<ul class="tweet-actions js-actions">";

    echo "<li class="more-tweet-actions">";
    echo "<div class="action-more-container">";
    echo "<div class="dropdown">";
    echo "<button type="button" class="btn-link with-icn dropdown-toggle js-dropdown-toggle js-tooltip">";
    echo "<span class="Icon Icon--delete"></span>";
    echo "<b>Delete</b>";
    echo "</button>";
    echo "<div class="dropdown-menu">";
   echo "<div class="dropdown-caret">";
echo "<div class="caret-outer"></div>";
echo "<div class="caret-inner"></div>";
echo "</div>";

echo "</div>";
echo "</div>";
echo "</div>";
echo "</li>";
echo "</ul>";
echo "</div>"; 
echo "</div>";
echo "</div>";

在 Scott 回答之后,我更改了我的代码,但它仍然无法正常工作,我没有得到它。

 echo  "<div class=\"tweet original-tweet js-stream-tweet js-actionable-tweet js-profile-popup-actionable js-original-tweet   

my-tweet\" data-tweet-id="515380319977893890\"data-item-id=\"515380319977893890\" data-name=\"\" data-user-id=\"2665607941\" data-expanded-footer=\"

晚上 11:00 - 2014 年 9 月 25 日 · 详情 " 数据你关注=\"假\"数据你块=\"假\">";

回声“”;

  echo   "<div class=\"stream-item-header\">" ;

     echo "<a  class=\"account-group js-account-group js-action-profile js-user-profile-link js-nav\" data-user-id=\"2665607941\
     ">
           <img class=\"avatar js-action-profile-avatar\" src=\"https://pbs.twimg.com/profile_images/506790785572814848/vdj_UAuZ_bigger.jpeg\" alt=\"\">
           <strong class=\"fullname js-action-profile-name show-popup-with-id\" data-aria-label-part> </strong>
           <span>&rlm;</span><span class=\"username js-action-profile-name\" data-aria-label-part><s></s><b>   </b></span>
           </a>" ;

    echo "<small class=\"time\">
          <a  class=\"tweet-timestamp js-permalink js-nav js-tooltip\" title=\"11:00 PM - 25 Sep 2014\" ><span class=\"_timestamp js-short-timestamp \" 
           data-aria-label-part=\"last\" data-time=\"1411711218\" data-time-ms=\"1411711218000\" data-long-form=\"true\">Sep 25</span></a>
          </small>" ;


    echo"</div>";

    echo "<p class=\"js-tweet-text tweet-text\" lang=\"en\" data-aria-label-part=\"0\"> </p>" ;

    echo "<div class=\"stream-item-footer\">";

    echo "<ul class=\"tweet-actions js-actions">";

    echo "<li class=\"more-tweet-actions\">";
    echo "<div class=\"action-more-container\">";
    echo "<div class=\"dropdown\">";
    echo "<button type=\"button" class=\"btn-link with-icn dropdown-toggle js-dropdown-toggle js-tooltip\">";
    echo "<span class=\"Icon Icon--delete\"></span>";
    echo "<b>Delete</b>";
    echo "</button>";
    echo "<div class=\"dropdown-menu\">";
   echo "<div class=\"dropdown-caret\">";
echo "<div class=\"caret-outer\"></div>";
echo "<div class=\"caret-inner\"></div>";
echo "</div>";

echo "</div>";
echo "</div>";
echo "</div>";
echo "</li>";
echo "</ul>";
echo "</div>"; 
echo   "</div>";
echo   "</div>";

【问题讨论】:

转义引号... 【参考方案1】:

检查您的单引号和双引号。返回的字符串被截断。这是无效的:

 echo   "<div class="stream-item-header">" ;

改成:

echo   "<div class=\"stream-item-header\">" ;

或者:

echo   "<div class='stream-item-header'>" ;

并为每个回声线重复此修复。

例如,这个:

echo  "<div class="tweet original-tweet js-stream-tweet js-actionable-tweet js-profile-  popup-actionable js-original-tweet my-tweet" data-tweet-id="515380319977893890"data-item-id="515380319977893890"  data-name="" data-user-id="2665607941" data-expanded-footer="&lt;div class=&quot;js-tweet-details-fixer tweet-details-fixer&quot;&gt;&#10;&#10;&#10;&#10;    &lt;div class=&quot;entities-media-container js-media-container&quot; style=&quot;min-height:0px&quot;&gt;&#10;    &lt;/div&gt;&#10;&#10;  &lt;div class=&quot;js-machine-translated-tweet-container&quot;&gt;&lt;/div&gt;&#10;    &lt;div class=&quot;js-tweet-stats-container tweet-stats-container &quot;&gt;&#10;    &lt;/div&gt;&#10;&#10;  &lt;div class=&quot;client-and-actions&quot;&gt;&#10;  &lt;span class=&quot;metadata&quot;&gt;&#10;    &lt;span&gt;11:00 PM - 25 Sep 2014&lt;/span&gt;&#10;&#10;       &amp;middot; &lt;a class=&quot;permalink-link js-permalink js-nav&quot; href=&quot;/status/515380319977893890&quot;  tabindex=&quot;-1&quot;&gt;Details&lt;/a&gt;&#10;    &#10;&#10;&#10;  &lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&#10;&lt;/div&gt;&#10;" data-you-follow="false"data-you-block="false">" ;

变成这样:

echo  "<div class=\"tweet original-tweet js-stream-tweet js-actionable-tweet js-profile-  popup-actionable js-original-tweet my-tweet\" data-tweet-id=\"515380319977893890\" data-item-id=\"515380319977893890\"  data-name=\"\" data-user-id=\"2665607941\" data-expanded-footer=\"&lt;div class=&quot;js-tweet-details-fixer tweet-details-fixer&quot;&gt;&#10;&#10;&#10;&#10;    &lt;div class=&quot;entities-media-container js-media-container&quot; style=&quot;min-height:0px&quot;&gt;&#10;    &lt;/div&gt;&#10;&#10;  &lt;div class=&quot;js-machine-translated-tweet-container&quot;&gt;&lt;/div&gt;&#10;    &lt;div class=&quot;js-tweet-stats-container tweet-stats-container &quot;&gt;&#10;    &lt;/div&gt;&#10;&#10;  &lt;div class=&quot;client-and-actions&quot;&gt;&#10;  &lt;span class=&quot;metadata&quot;&gt;&#10;    &lt;span&gt;11:00 PM - 25 Sep 2014&lt;/span&gt;&#10;&#10;       &amp;middot; &lt;a class=&quot;permalink-link js-permalink js-nav&quot; href=&quot;/status/515380319977893890&quot;  tabindex=&quot;-1&quot;&gt;Details&lt;/a&gt;&#10;    &#10;&#10;&#10;  &lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&#10;&lt;/div&gt;&#10;\" data-you-follow=\"false\" data-you-block=\"false\">" ;

对于更高级的技巧,您可以将整个 HTML 移动到一个单独的文件中,如果您愿意,可以是一个 HTML 模板。然后通过 PHP 读入文件内容并根据需要查找/替换变量或动态部分。但是,这可能超出了您的问题范围。

【讨论】:

我更改了整个代码,但仍然没有显示任何内容,是否还有其他错误? 是的,检查你所有的双引号。 如果第二种方法适用于我的情况,请告诉我一些有关它的信息或提供任何链接来学习它。我今天只需要修理我的东西。非常感谢。 是的,如果你有一个 " inside of two other " 那么你需要把它改成 \" 这样它就不会过早地结束字符串。 或者简单地使用addslashes函数在echo之前自动退出字符串中的单引号和双引号【参考方案2】:

echo里面的引号需要转义:

echo "<div class=\"stream-item-footer\">";

【讨论】:

我更改了它,但没有显示任何内容。 在你所有的回声中?【参考方案3】:

用 \ 转义引号

   echo   "<div class=\"content\">" ;

【讨论】:

更改不起作用,还有什么问题吗?【参考方案4】:

为我工作:

    echo '<div class="content">';
  echo '<div class="stream-item-header">';
       echo '<a  class="account-group js-account-group js-action-profile js-user-profile-link js-nav" data-user-id="2665607941">
           <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/506790785572814848/vdj_UAuZ_bigger.jpeg" >
           <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part> </strong>
           <span>&rlm;</span><span class="username js-action-profile-name" data-aria-label-part><s></s><b>   </b></span>
           </a>';
    echo '<small class="time">
          <a  class="tweet-timestamp js-permalink js-nav js-tooltip" title="11:00 PM - 25 Sep 2014" ><span class="_timestamp js-short-timestamp " 
           data-aria-label-part="last" data-time="1411711218" data-time-ms="1411711218000" data-long-form="true">Sep 25</span></a>
          </small>';
    echo '</div>';
    echo '<p class="js-tweet-text tweet-text" lang="en" data-aria-label-part="0"> </p>';
    echo '<div class="stream-item-footer">';
    echo '<ul class="tweet-actions js-actions">';
    echo '<li class="more-tweet-actions">';
    echo '<div class="action-more-container">';
    echo '<div class="dropdown">';
    echo '<button type="button" class="btn-link with-icn dropdown-toggle js-dropdown-toggle js-tooltip">';
    echo '<span class="Icon Icon--delete"></span>';
    echo '<b>Delete</b>';
    echo '</button>';
    echo '<div class="dropdown-menu">';
   echo '<div class="dropdown-caret">';
echo '<div class="caret-outer"></div>';
echo '<div class="caret-inner"></div>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</li>';
echo '</ul>';
echo '</div>'; 
echo '</div>';
echo '</div>';

【讨论】:

如果您在生态时使用单引号,如果您在 HTML 中使用双引号,则不需要转义双引号,反之亦然。这些都有效: ` echo "" ; echo '' ;` 根据你在里面使用的内容,养成使用相反的习惯。如果您需要,您可以随时使用 \ 嘿,非常感谢您的帮助。当我获得更多声誉时,我一定会投票 【参考方案5】:

我会在这里写下我的回复,希望对你有所帮助。但是没有什么新东西,正如 Scott 所说,你错过了很多双引号,恕我直言,你是一个手动操作的疯狂男孩(在良好的意义上)。

假设你是 JSON 数组,并以这样的方式使用我在评论中链接的函数(希望你有类似的情况,在其他情况下是相同的,但你必须复杂代码,也许):

....
for($i=0; $i<sizeof($jsonarray); $i++)
echo addslashes($jsonarray[$i]);

....

通过这种方式,您的所有代码都被转义了,如果错误仍然存​​在,则意味着问题出在其他地方

【讨论】:

以上是关于在 PHP 代码中嵌入 HTML的主要内容,如果未能解决你的问题,请参考以下文章

在html中嵌入php代码的方式有哪几种?

为什么在html中嵌入的php代码会被浏览器注释掉

php嵌入到html中的执行过程

如何将嵌入式代码发送到服务器端-PHP

html页面嵌入php代码不显示内容

PHP开发中需要注意几点事项,新手少走弯路必备知识