我目前有这个功能来搜索和替换文本文件。
// 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被文件中的值替换。
答案 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 将输出
字你好单词单词
下一个问题是,您是否需要处理字边界?