我正在构建一个站点字典,您可以在其中一次搜索多个单词。我有一个添加输入的按钮,每个项一个。现在,我使用这些输入,并通过一个字典网站(合法地)获得它们的定义,并对它们应用我自己的css样式。所以,当你在输入1中输入你的单词时(让我们这样称呼它),你会在输入旁边的div中得到它的定义。因此,我有一个变量用于请求单词,另外四个变量用于获取和样式,最后一个"echo"用于输出。下面是代码:
enter code <?php
$data = preg_replace('/(search?[dw]+)/','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>';
?>
问题:我如何自动生成这些变量(实际上,过程本身)为每一个新的输入添加?
数组就是你要找的。与创建一个新的变量$data{INDEX}不同,你可以创建一个变量来存放一系列变量。
例如,如果你想'push'一个数组的数据,你可以这样做。
$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>';
}