str_replace()里面的函数

时间:2013-09-08 19:04:21

标签: php

所以这可能很简单,但我被困住了。出于某种原因,我无法使用str_replace函数来改变/编辑一个我似乎无法工作的变量。

的index.php

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

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

</body></html>

test.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);

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

3 个答案:

答案 0 :(得分: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%">';

答案 1 :(得分:1)

<{1}}中未提供

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

答案 2 :(得分:0)

无法从$header内访问

cons(),这同样适用于 test.php 开头的所有空数组 您需要将它们作为参数传递,或者添加

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

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