如何将外部php文件的输出放到页面上的特定位置

时间:2013-08-02 18:57:08

标签: php html css3

我在这里查看过有关类似问题的其他帖子,但找不到答案。

编辑我一直在玩这个,我想稍微改变一下我的问题。

我在放置从外部php文件回显的输出时遇到问题。

以下是一些示例代码来演示我的问题 - 这是我的主文件writephp.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Test Php </title>
    <link rel="stylesheet" href="writephp.css">
</head>
<body>
    <div class="allContent">    
        <?php for($i=0; $i<3; $i++): ?>
            <div class="commentBox">
               <p> Just a box</p>
            </div>  
        <?php endfor; ?>
        <a href="write.php?outputHtml">Php output</a>       
    </div>  
</body>
</html>

现在我可以用css中心:

.allContent {
width: 400px;
margin-left: auto;
margin-right: auto;
font-family: Arial;
}
.commentBox {
border: 1px solid black;
width: 400px;
padding: 0px 5px 5px 5px;
margin-top: 5px;
}

因此,在html文件中,php会写出以页面为中心的框,因为php循环位于“allConent”div中。

锚点调用一个外部的php文件,它会回显更多的盒子。

该文件看起来像这样,被称为write.phpwritephp.php是调用它的主文件):

<?php
if (isset($_GET['outputHtml']))
{
 echo "<p  class='allContent commentBox'>" . "This is from external PHP" . "</p>";
 echo "<p  class='allContent commentBox'>" . "This is also from external PHP" . "</p>";
 include 'writephp.php';
}

output looks like

但外部php的回显输出高于主文件的输出 - 事实上它放在<!doctype html>标签之前,显然不是很好。

页面源代码如下:

<p  class='commentBox allContent'>This is from external PHP</p
><p class='allContent commentBox'>This is also from  external PHP</p>
    <!DOCTYPE html>
    <html lang="en">
<head>
    <meta charset="utf-8">
    <title>Test Php </title>
    <link rel="stylesheet" href="writephp.css">
</head>
<body>
    <div class="allContent">    
                        <div class="commentBox">
               <p> Just a box</p>
            </div>  
                        <div class="commentBox">
               <p> Just a box</p>
            </div>  
                        <div class="commentBox">
               <p> Just a box</p>
            </div>  
        <a href="write.php?outputHtml">Php output</a>       
    </div>  
</body>

一般来说,我的问题是“如何将html从外部php文件放到我想要的任何地方?

3 个答案:

答案 0 :(得分:4)

<?php
if (isset($_GET['outputHtml']))
{
 echo "<p  class='commentBox'>" . "This is from external PHP" . "</p>";
 echo "<p  class='commentBox'>" . "This is also from external PHP" . "</p>";
 include 'writephp.php';
}

您的write.php中的内容不正确,请参阅writephp.php是一个包含<html> <head><body>标记的完整HTML网页,您在回复一些内容后将其包含在内<p>标记,不会让您的新框在页面正文中神奇地显示,您将在文件开头跟两个<p>创建一些无效标记,然后是{{ 1}}等...

修改

关于您的问题的更新,现在读取“如何将外部php文件的输出放置到页面上的特定位置”

正如@Robert Seddon-Smith在他的回答中正确指出的那样,使用<!DOCTYPE><html>会使内容准确地出现在调用时,所以如果你想在你的主文件中包含你的新文件,那么对include的调用应该是向后调用的,也就是说,您应该将内容包含在主文件中,您可以使用此示例来测试它:

修改include以便在$ _GET变量存在时回显框

write.php

并在主文件<?php if (isset($_GET['outputHtml'])) { echo "<div class='commentBox'>" . "This is from external PHP" . "</div>"; echo "<div class='commentBox'>" . "This is also from external PHP" . "</div>"; } ?>

中进行包含调用
writephp.php

当您点击链接时,这将在容器中包含两个新框。

另外你会注意到,从包含文件中设置样式内容没有什么特别之处,因为最终所有标记都呈现为单个HTML页面,如果内容是从主要内容回显的并不重要页面或包含的文件,它将遵守CSS中的任何规则

答案 1 :(得分:1)

问题是你没有使用write.php生成正确的内容,可能是因为误解了实际包含的内容。

所有include()函数都会获取包含文件的内容,并在包含它的文件中将其解析为PHP。它与在同一个地方剪切和粘贴文件内容的效果几乎相同。只需在您附带的文件中输入您可以输入的内容。

我会正确地重写这一批,以便write.php只包含一个为你的通讯盒生成一串html的函数:

<?PHP
function commentbox()
    {
    $output="";
    for($i=0; $i<3; $i++)
    $output.="<div class='commentBox' id='cb_$i'><p> Just a box</p></div>";
    return $output;
    }
?>

你在php文件的顶部包含(),然后在需要的地方调用它的输出:

echo commentbox();

或者,更好:

创建一个footer.php文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Test Php </title>
    <link rel="stylesheet" href="writephp.css">
</head>
<body>
    <div id="allContent">   
        <?PHP echo $content;?>     
    </div>  
</body>
</html>

您可以非常轻松地使用所有项目。

这是以这种方式使用的:

<?PHP
include("write.php");
$content="whatever";
$content.=commentbox();
$content.="whateverelse";
include("footer.php");
?>

即使我故意不用格式化上面的代码,也很容易找到内容的创建位置并进行调试。即使使用代码上下文着色,混合的PHP和HTML代码也是调试的噩梦。找到你想要借用的钻头并将其放在其他地方也很困难。

答案 2 :(得分:0)

首先,您不应该在两个单独的元素上使用ID“allContent”。 ID应该是唯一的。类可以用于样式化多个元素。

为什么不将其更改为以下代码?你有没有理由让它们与众不同?

echo '<div class="commentBox"><p>' . 'This is from external PHP' . '</p></div>';  
echo '<div class="commentBox"><p>' . 'This is also from external PHP' . '</p></div>';