2013-06-11 3 views
0

내 검색 엔진 용 단어의 색인 생성을위한 코드를 작성 중입니다. 같은 뭔가 : 오류 받기 : 정의되지 않은 오프셋

$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; 
     } 
    } 
} 

내가 line 24에 가끔 오류 Notice: Undefined offset: 2 in C:\xampp\htdocs\ps-friend\search.php on line 26와가 계속 왜 $cur_word 에코

. 그것을 교정하는 방법은 무엇입니까?

+0

당신은 단순히 정규식이 무언가와 일치한다고 가정하고 반복합니다. –

답변

2
for($i = 0; $i < count($words); $i++) 
{ 
    for($j = 0; $j < count($words[$i]); $j++) 

. 그러나 루프가 존재하지 않는 요소에 도달하면 루프가 끝나는 것을 의미하므로 루프를 참조하려고하기 때문에 경고가 발생합니다. 당신이 한 경우

귀하의 구조가 확인 될 것이다 : 변수가 존재하고 경고하지 않습니다

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

isset() 테스트 여부를 지정합니다.

+0

예, 실수였습니다. 그러나 여전히 동일한 오류를줍니다. –

+0

Solved :) 감사합니다.이 제한 시간이 끝나면 곧 답을 표시 할 것입니다.) –

4

당신은 조금 이상하게 보입니다. 나는 당신이 원하는 것은 생각 : 귀하의 코드를 직접 $words[$i]을 테스트

for($i = 0; $i < count($words); $i++) 
    { 
+0

나는 그것을 orrected. 하지만 여전히 동일한 오류가 발생합니다 : ( –

+0

) 두 번째 루프도 수정 했습니까? – steven

+0

예, 예! 답변을 얻었습니다. –

관련 문제