PHP函数在HTML标记之前打印

时间:2014-07-04 04:41:51

标签: php html

我有一个特殊的问题......我有一个有效的PHP函数,如下所示,它可以提取用户'根据该分数得分并输出一些信息(它尚未优化)。

不幸的是,无论出于什么原因,当我把它放在我的代码中时,它实际上并没有在HTML标记/位置内呈现我希望它被渲染 - 相反,它被呈现在页面顶部,搜索没有产生任何结果。

简化的代码是:

<?php
require('displayCodes.php');
displayCodesMain(1);
?>

displayCodesMain代码:

<?php
function displayCodesMain($page){ 
    if($page == 1){?>
<table class="friendcodes">
    <tr>
        <th>Username</th>
        <th>Friend Code</th>
        <th>Affinity</th>
        <th>Level</th>
        <th>Rating</th>
    </tr>
<?php
        $plisting = file_get_contents('plist.txt');
        $plist = explode(' ', $plisting, 4);
        require_once('vote.php');
        array_pop($plist);
        foreach($plist as $item) {
            $item = explode(':', $item);
            echo '<tr class="fc_premium">';
            $item[3] = substr($item[3], 0, 3) . '-' . substr($item[3], 3, 7);
            $item[1] = str_replace('&', ' ', $item[1]);
            echo '<td>' . $item[1] . '</td><td>' . $item[3] . '</td><td style="text-transform:capitalize;">' . $item[4] . '</td><td>' . $item[5] . '</td><td> '. displayRating(1)
.' </td>';
            echo '</tr>'; 
        }    
        echo '</table>';
    }
} // End of the function
?>

实际功能本身:

<?php
function displayRating($id){
    if(isset($id)){
        require_once('medoo.min.php');
        // Start up the D.B. Connection
        // Removed some DB setup code here...
        $phrase = '<div class="bc"><div data-hint="%1$s" class="hint--right vote %2$s"></div></div>';
        if($vScore == 0){
            printf($phrase, 'Neutral Score', 'v_equal');
            return;
        } elseif ($vScore > 0){
            // Positive Here
            switch($vScore){
                case 1:
                    printf($phrase, '1 Like', 'v_p1 hint--success');
                    break;
                case 2:
                    printf($phrase, '2 Likes', 'v_p2 hint--success');
                    break;
                case 3:
                    printf($phrase, '3 Likes', 'v_p3 hint--success');
                    break;
                case 4:
                    printf($phrase, '4 Likes', 'v_p4 hint--success');
                    break;
                case 5:
                    printf($phrase, '5 Likes', 'v_p5 hint--success');
                    break;
                case 6:
                    printf($phrase, '6 Likes', 'v_p6 hint--success');
                    break;
                case 7:
                    printf($phrase, '7 Likes', 'v_p7 hint--success');
                    break;
                default:
                    printf($phrase, $vScore . ' Likes', 'v_p7 hint-success');
                    break;
            }
        } elseif ($vScore < 0){
            // Negative Here
            switch($vScore){
                case -1:
                    printf($phrase, '1 Dislike', 'v_m1 hint--error');
                    break;
                default:
                    if($vScore < -7){ $vClass = 7; } else { $vClass = abs($vScore); }
                    printf($phrase, abs($vScore) . ' Dislikes', 'v_m' . $vClass . ' hint--error');
            }
        }
    } else {
        return;
    }
}
?>

我甚至在第一个foreach语句中为该函数添加了一个静态变量,但是,我仍然没有运气让它显示在适当的位置。

我目前无法访问我的php.ini,出于安全原因,phpinfo()似乎已被禁用。在我从主人那里找到我的信息后,我会回复你们。

1 个答案:

答案 0 :(得分:1)

在您的主程序中,您使用echo输出displayRating()的返回值,但它不会返回任何内容。相反,displayRating() 也使用echo 。这就是您的输出无序的原因。

转过来:

echo /* ... */ '</td><td> '. displayRating(1) .' </td>';

成:

echo /* ... */ '</td><td> ';
displayRating(1);
echo ' </td>';

构建并从displayRating()返回一个字符串。