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 配列にある値に置き換えることです。そして、それは完璧に機能します。

しかし、私がする必要があるのは、渡されたすべての var を取得 (get/post) してから、配列を作成して、var が置換する値になり、値がそれを置換する値になるようにすることです。

したがって、URL 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 に答える