PHP使变量和值成为数组的一部分

时间:2012-10-26 04:36:28

标签: php arrays variables foreach

我目前有这个功能来搜索和替换文本文件。

// Input
$ect = array('Visssa', 'Lisssa', 'her');

// Placeholders in the file
$put =  array('lname', 'fname', 'hisher');


// Replace the placeholders
$oput = str_replace($put, $ct, 'tmpfile.txt');

这不是完整的程序,但想法是将tmpfile.txt中的值替换为$ etc数组中的值。它完美无缺。

但是,我需要做的是获取所有传递的变量(获取/发布),然后创建数组,以便var是要替换的值,值是替换它的值。

所以,如果我发送了网址http://xyz.com/?lname=tom&ogre=yes

文件中的所有lname实例都将替换为tom,并且所有的ogre实例都将替换为yes。

所以不知何故它只是获取在/ get中传递的任何/所有变量,然后上面显示的数组将导致var被文件中的值替换。

2 个答案:

答案 0 :(得分:1)

这样做:

    $etc = array_keys($_GET);
    array_walk($etc,"addBraces");
    $put = array_values($_GET);
    $oput = str_replace($etc, $put, 'tmpfile.txt'); 

    function addBraces(&$item)
    {
        $item = "{".$item."}";
    }

当然,所有常规的“总是消毒/逃避您的数据”等......

答案 1 :(得分:0)

parse_str()将非常适合这个

function addreplacetokens(&$input)
{
  $input = '{' . $input . '}';
}

$string = 'word {lname} word {fname} word {hisher} word';
$filter = array('lname','fname','hisher');
parse_str($_SERVER['QUERY_STRING'],$replacements);
foreach($replacements as $key => $value)
  if(in_array($key,$filter) == false)
    unset($replacements[$key]);
// this next block can be removed if you don't want a default
foreach($filter as $key)
  if(array_key_exists($key,$replacements) == false)
    $replacements[$key] = ''; // change this!
// copy the array so the keys can be filtered
$replacements_keys = array_keys($replacements);
array_walk($replacements_keys,'addreplacetokens');
$string = str_replace($replacements_keys,$replacements,$string);
echo $string;

这样?lname = hello 将输出

  

字你好单词单词

下一个问题是,您是否需要处理字边界?