2012-01-30 2 views
0

txt 파일을로드하는 최종 결과를 얻으려면 각 단어가 몇 번 사용되고 결과가 에코되는지 계산해야합니다. 사용되는 코드는 거의있어PHP 읽기 파일 오류

<?php 
$text = fopen("words.txt", "r"); 
$textarray = explode(" ",$text); 
foreach($textarray as $numbers) 
    { 
    if(isset($str_count[$numbers])) 
    $str_count[$numbers]++; 
     else 
     $str_count[$numbers]=1; 
    } 

foreach($str_count as $words => $numbers) 
echo $words.": ".$numbers."<br>"; 

?> 
+2

질문은 무엇인가, 무엇을 작동하지 않습니다 여기

그리고

수정 된 소스 코드? –

+0

첫 번째 주석은'preg_split ('/ \ s + /', $ text);'에 대해'explode()'를 바꾸어서 여러 공백, 탭, 줄 바꿈 등을 설명 할 수 있다는 것입니다. – DaveRandom

+0

사실 PHP의 str_word_count() 함수를 사용하여 단어와 빈도 목록을 생성하지 못한다면 정확히 무엇이 문제입니까 –

답변

1

... 가치있는 제안을 앞으로 below.Looking 주어진하지만, 변경해야 할 몇 가지가있다.

fopen() 함수는 파일을 열 때 (이 경우 읽기 위해) 파일을 읽는 데 사용하는 리소스 (파일 핸들)를 반환합니다. 파일 내용을 반환하지 않습니다. 추가 정보가 필요하면 fopen() documentation을 확인하십시오. 간략 함을 위해서 fopen()file_get_contents()으로 대체했습니다.

둘째, @DaveRandom이 제안했듯이 preg_split('/\s+/', $text);explode()으로 바꾸는 것이 좋습니다. 이렇게하면 여러 공간을 처리 할 수 ​​있기 때문입니다. 물론 이것은 필수는 아니지만 권장됩니다.

마지막으로 preg_split('/\s+/', $text)으로 스크립트에 빈 요소가 있다는 것을 알았습니다. 따라서 빈 문자열을 추가하지 않기 위해 if 문을 추가했습니다. 이 단계도 필요하지 않으므로 필요하지 않으면 첫 번째 if 문만 제거하면됩니다.

<?php 
$text = file_get_contents('words.txt'); 
$textarray = preg_split('/\s+/', $text); 
foreach($textarray as $numbers) 
{ 
    if(empty($numbers)) { 
     continue; 
    } 
    if(isset($str_count[$numbers])) 
     $str_count[$numbers]++; 
    else 
      $str_count[$numbers]=1; 
} 

foreach($str_count as $words => $numbers) 
    echo $words.": ".$numbers."<br>"; 

?> 
+0

감사합니다. Tautvidas .. – Arun