首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP中的PHP?

PHP中的PHP?
EN

Stack Overflow用户
提问于 2012-01-11 09:43:46
回答 6查看 486关注 0票数 1

如果这听起来很愚蠢,我很抱歉!我正在使用PHP来创建我的网站的某些部分,如标题,然后在每个页面上回显它们。问题是我想把一些PHP代码放在这个部分中,如下所示:

代码语言:javascript
运行
复制
<?php
function makeHeader () {
$menuContent = <<<MENU

<!DOCTYPE html>
<html> etc..........


<?php
if(isset($_SESSION['user']))
    {
            $user = isset($_SESSION['user']) ? $_SESSION['user'] : '';  
            echo "<a href='logout.php'>$user</a>";
        }
    else
        {
            echo "some text..";
        }
    ?> 

MENU;
$menuContent .= "\n";
return $menuContent;
}

?>

这个是可能的吗?它抛出了错误,但从if(isset($_SESSION['user']))行开始,而不是从它上面的行开始。

EN

回答 6

Stack Overflow用户

发布于 2012-01-11 09:48:34

使用单引号或双引号字符串代替heredoc,应该没问题。

票数 2
EN

Stack Overflow用户

发布于 2012-01-11 09:49:05

你得到的错误(但没有提到)可能是一个解析错误。HEREDOC语法需要用{}大括号将变量括起来,或者对于简单的数组访问没有键引号。解决方法是使用NOWDOC字符串。

但无论如何你都不能用这种方法来做。字符串上下文中的PHP代码不能运行。而且应用任何变通方法都是没有意义的。只需使用include脚本而不是HEREDOC,并使用ob_startob_get_clean来捕获输出。

票数 1
EN

Stack Overflow用户

发布于 2012-01-11 09:46:13

你的代码是不完整的吗?或者您是否在函数makeHeader的末尾遗漏了一个闭合的}?这将在"if“行抛出一个异常。更不用说在顶部HTML之前缺少的php结束标记了。

我认为真正的问题是你不能在一个函数中有和结束标签和HTML。如果你真的需要它,那么你可以在需要的时候“回显”HTML。但是我不能想象您会想要从头到尾都使用echo语句来编写整个文档。

以下是合适的吗?

代码语言:javascript
运行
复制
<?PHP
    session_start();
    $menuContent = <<<MENU;
?>
<!DOCTYPE html>
<html>
    <body>
    <?PHP
        echo $menuContent;
        if(isset($_SESSION['user'])) {
            $user = isset($_SESSION['user']) ? $_SESSION['user'] : '';  
            echo "<a href='logout.php'>$user</a>";
        } else {
            echo "some text..";
        }
    ?>
    etc..........
    </body>
</html>

或者你需要在之前在菜单部分中构建它吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8813117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档