2013-09-08 2 views
0

Так что это может быть что-то легкое, но я застрял. По какой-то причине я не могу заставить это работать, используя функцию с str_replace для изменения/редактирования переменной, которую я, похоже, не могу заставить работать.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; 
    } 

Когда я эхо из $ md5 из минусов() работает, и когда я print_r() $ ответов и $ tips работает. Str_replace, как я думаю, очищает $ header вместо замены% src%. Я сделал много поиска, но все, что я наткнулся, пользователи/учебники показывают такие вещи, как

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

, который не то, что я ищу. Я хочу, чтобы код был несколько компактным, а не дублированием и повторяющимся кодом. Поэтому не совсем уверен, что делать, если у кого есть какие-то идеи или предложения, мы будем очень благодарны.

+0

Возможно, вы не передаете переменную '$ header' в свою функцию и не включили' error_reporting 'даже если что-то не работает. – mario

+1

'$ header' недоступен в' cons() '. Попробуйте передать его в 'cons()' или объявите его глобальным. – Reeno

+0

@reeno, если вы разместите это как ответ, я приму его. Я даже не думал об объявлении $ header как глобального. Это исправило мою проблему. Спасибо alot – acrichm

ответ

1

$header не доступен в cons(). Попробуйте передать его cons() или объявите его глобальным.

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%">'; 
+0

Я пробовал эхо-повторять каждый раз, и это все еще не сработало, у меня возникло ощущение, что мне, возможно, придется построить его в функции. – acrichm

+0

Что вы подразумеваете под "не работает"? Какую ошибку вы получили? – viraptor

+0

ahh well Я думал, что это эхо и пустая переменная, но забыл прокомментировать ini_set ('display_errors', 0), но с вашей помощью и помощью reeno я получил излом. – acrichm

0

$header не доступен из cons(), то же самое относится и ко всем пустым массивам в начале test.php Вы хотите передать их в качестве аргумента, или добавить

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

в начало функции cons(), чтобы позволить ему получить доступ к переменным из-за пределов своей области.