1

我正在编写一个代码来为我的搜索引擎索引单词。就像是:

$handle = fopen("http://localhost/ps-friend/index.php", "r");   


while( $buf = fgets($handle,1024) )
{
   /* Remove whitespace from beginning and end of string: */
   $buf = trim($buf);

   /* Try to remove all HTML-tags: */
   $buf = strip_tags($buf);
   $buf = preg_replace('/&\w;/', '', $buf);

   /* Extract all words matching the regexp from the current line: */
   preg_match_all("/(\b[\w+]+\b)/",$buf,$words);

   /* Loop through all words/occurrences and insert them into the database(Not shown here): */
   for( $i = 0; $words[$i]; $i++ )
   {
     for( $j = 0; $words[$i][$j]; $j++ )
     {

       $cur_word = addslashes( strtolower($words[$i][$j]) );

        echo $cur_word;
       }
   }
}

当我回$cur_word显为什么我不断收到错误Notice: Undefined offset: 2 in C:\xampp\htdocs\ps-friend\search.php on line 26时,有时会在line 24. 纠正它的方法是什么?

4

2 回答 2

4

你的for循环看起来有点奇怪。我想你想要的是:

 for( $i = 0; $i < count($words); $i++ )
   {
于 2013-06-11T05:08:35.927 回答
2
for( $i = 0; $i < count($words); $i++ )
{
  for( $j = 0; $j < count($words[$i]); $j++ )

您的代码正在$words[$i]直接测试。但这意味着循环在到达不存在的元素时结束,这会导致警告,因为您尝试引用它。

如果你这样做了,你的结构就可以了:

for( $i = 0; isset($words[$i]); $i++ )
{
  for( $j = 0; isset($words[$i][$j]); $j++ )

isset()测试变量是否存在,并且不发出警告。

于 2013-06-11T05:08:54.407 回答