我在这里查看过有关类似问题的其他帖子,但找不到答案。
编辑我一直在玩这个,我想稍微改变一下我的问题。
我在放置从外部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.php
(writephp.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';
}
但外部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文件放到我想要的任何地方?”
答案 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>';