2017-09-06 2 views
2

PHP preg_grep가 작동하지 않습니까? 저는 PHP 초급자이고 영어 의사 소통도합니다. 된 전체 스크립트를 단순화 할 수 당신이PHP preg_grep 오류?

for ($i = 0 ; $i <= $count; $i++) { 
    if ($x = preg_grep("/^" . $arr_keywords[$i] . "/", $open_news)) { 
     echo implode(', ', $x), PHP_EOL; 
    } 
} 

에 코드를 다시 작성해야하므로 일치하는 라인이 프로그램의 실행 결과는 "ArrayArray"로 표시됩니다 ...

<?php 
$news = fopen("news.txt", "r"); 
$keywords = fopen("keywords.txt", "r"); 

$open_news = []; 
while (!feof($news)) { 
    $open_news[] = fgets($news); 
} 

$arr_keywords = []; 
while (!feof($keywords)) { 
    $arr_keywords[] = fgets($keywords); 
} 

$count = count($arr_keywords); 


for ($i = 0 ; $i <= $count; $i++) { 
    if ($x = preg_grep("/^" . $arr_keywords[$i] . "/", $open_news)) { 
     echo $x; 
     } 
} 

fclose($news); 
fclose($keywords); 
?> 
+0

'var_dump ($ x)'를 사용하여 배열을 에코 할 수 없습니다. $ x를 덤프하십시오. 여기에서 볼 수 있듯이 : http://php.net/manual/en/function.preg-grep.php, preg_grep의 반환 값은 배열입니다. – Devon

답변

0

preg_grep returns 배열, :

<?php 

$open_news = file("news.txt",  FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
$arr_keywords = file("keywords.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

foreach ($arr_keywords as $keyword) { 
    if ($x = preg_grep("/^" . preg_quote($keyword, '/') . "/", $open_news)) { 
     echo implode(', ', $x) . PHP_EOL; 
    } 
}