2017-09-06 4 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; 
    } 
}