所以这可能很简单,但我被困住了。出于某种原因,我无法使用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);
这不是我想要的。我想保持代码有点紧凑,而不是重复和重复的代码。所以不确定该怎么做,如果有人有任何想法或建议将不胜感激。
答案 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)
$header
。尝试将其传递给cons()
或将其声明为全局。
答案 2 :(得分:0)
$header
内访问 cons()
,这同样适用于 test.php 开头的所有空数组
您需要将它们作为参数传递,或者添加
global $header, $md5, $question, $answers, $tip;
到函数cons()
的顶部,以允许它从其范围之外访问变量