0

所以这可能很容易,但我被困住了。出于某种原因,我无法让它工作,使用带有 str_replace 的函数来更改/编辑我似乎无法工作的变量。

索引.php

<?php
    include("test.php");
?>
<html><head></head><body>

<? $a = cons(array("one","two","three"),array("four","five","six")); ?>

</body></html>

测试.php

$header = '<form class="Poll" method="post" action="%src%"><input type="hidden" name="QID" value="%qid%" /><h4>%question%</h4><table width="100%">';
$md5 = '';
$question = array();
$answers = array();
$tips = array();

function cons($params, $tips) {
        $question = array_shift($params);
        $answers = $params;
        $tooltip = $tips;
        $md5 = md5($question);  
        $header = str_replace('%src%', $_SERVER['SCRIPT_NAME'], $header);
        $header = str_replace('%qid%', $md5, $header);
        $header = str_replace('%question%', $question, $header);

        //isset($_COOKIE[$md5]) ? poll($VOTES) : poll($POLL);  


        /* using this to test */
        if(isset($_COOKIE[$md5])){
            echo "Hello";
        }else{
            echo $header;
            //echo $center;
            //echo $footer;
        }
    echo $md5;
    }

当我从 cons() 回显 $md5 时,它可以工作,而当我 print_r() $answers 和 $tips 它可以工作。str_replace,是我的想法,是清除 $header 而不是替换 %src%。我已经做了很多搜索,但是我遇到的所有内容,用户/教程都显示了类似的东西

echo  str_replace('%question%', $question, $header);

这不是我要找的。我想保持代码有点紧凑,而不是有重复和重复的代码。所以不太确定该怎么做,如果有人有任何想法或建议将不胜感激。

4

3 回答 3

2

你写的看起来应该可以工作,但我还没有尝试过运行它。每次检查结果str_replace并查看您看到的值。

或者,完全跳过替换,只需在适当的位置构造字符串:

$header = '<form class="Poll" method="post" action="' . $_SERVER['SCRIPT_NAME'] . '"><input type="hidden" name="QID" value="' . $md5 . '" /><h4>' . $question . '</h4><table width="100%">';
于 2013-09-08T19:12:28.790 回答
1

$header中不可用cons()。尝试将其传递给cons()或将其声明为全局。

于 2013-09-08T19:23:29.127 回答
0

$header不能从内部访问,这同样适用于test.phpcons()开头的所有空数组 您需要将它们作为参数传递,或添加

global $header, $md5, $question, $answers, $tip;

到函数的顶部,cons()以允许它从其范围之外访问变量

于 2013-09-08T19:23:33.077 回答