0

我目前有这个功能可以在文本文件中搜索和替换。

// 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 数组中的值。它完美无缺。

但是,我需要做的是获取所有传递的变量(get/post),然后制作数组,以便 var 是要替换的值,而值是要替换它的值。

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

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

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

4

2 回答 2

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."}";
    }

当然,所有常规的“总是清理/转义您的数据”等......

于 2012-10-26T04:41:53.823 回答
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将输出

词你好词词词

下一个问题,你是否需要处理单词边界?

于 2012-10-26T04:42:15.883 回答