0

一度に複数の単語を検索できるサイト辞書を作成しています。入力を追加するためのボタンがあり、用語ごとに 1 つずつあります。今、私はそれらの入力を使用し、辞書サイトを通じて (合法的に) それらの定義を取得し、独自の CSS スタイルをそれらに適用します。したがって、入力 1 に単語を入力すると (そのように呼びましょう)、入力の隣の div にその定義が表示されます。したがって、単語を要求する変数が 1 つ、フェッチとスタイリング用に他に 4 つ、出力用に最後の「エコー」が 1 つあります。コードは次のとおりです。

enter code <?php
    $data = preg_replace('/(search?[\d\w]+)/','http://lema.rae.es/drae/srv/\1', $data);
    $word = $_REQUEST['word'];
    $word2 = $_REQUEST['word2'];

    $url = "http://lema.rae.es/drae/srv/search?val={$word}";
    $url2 = "http://lema.rae.es/drae/srv/search?val={$word2}";

    $css = <<<EOT

    <style type="text/css">

    </style>
    EOT;

$data = file_get_contents($url);
$data2 = file_get_contents($url2);
$data = str_replace('<head>', $css.'</head>', $data);
$data2 = str_replace('<head>', $css.'</head>', $data2);
$data = str_replace('<span class="f"><b>.</b></span>', '', $data);
$data2 = str_replace('<span class="f"><b>.</b></span>', '', $data2);
      echo '<div id="result1"
      style="">
     '.$data.' 
     </div>';

      echo '<div id="result1"
      style="">
     '.$data2.' 
     </div>';

        ?>

問題: 新しい入力が追加されるたびに、この変数 (実際にはプロセス自体) を自動的に生成するにはどうすればよいですか?

4

1 に答える 1

1

配列はあなたが探しているものです。新しい変数 $data{INDEX} を作成する代わりに、変数の範囲を保持できる 1 つの変数を作成できます。

たとえば、配列にデータを「プッシュ」したい場合は、これを行うことができます。

$myData = array();

// appends the contents to the array
$myData[] = file_get_contents($url);
$myData[] = file_get_contents($url2);

配列を使用すると、汎用性と効率が向上します。

ドキュメントはこちらにあります

完全な実装は次のようになります。

// create an array of requests that we want
// to load in the url.
$words = array('word', 'word2');

// we'll use this later on for loading the files.
$baseUrl = 'http://lema.rae.es/drae/srv/search?val=';

// string to replace in the head.
$cssReplace = '<style type="text/css"></style></head>';

// string to remove in the document.
$spanRemove = '<span class="f"><b>.</b></span>';

// use for printing out the result ID.
$resultIndex = 0;

// loop through the words we defined above
// load the respective file, and print it out.
foreach($words as $word) {
    // check if the request with
    // the given word exists. If not,
    // continue to the next word
    if(!isset($_REQUEST[$word]))
        continue;

    // load the contents of the base url and requested word.
    $contents = file_get_contents($baseUrl . $_REQUEST[$word]);

    // replace the data defined above.
    $contents = str_replace('</head>', $cssReplace, $contents);
    $contents = str_replace($spanRemove, '', $contents);

    // print out the result with the result index.
    // ++$resultIndex simply returns the value of 
    // $resultIndex after adding one to it.
    echo '<div id="result', (++$resultIndex) ,'">', $contents ,'</div>';
}
于 2013-01-09T08:00:27.400 に答える