【问题标题】:PHP preg_grep error?PHP preg_grep 错误?
【发布时间】:2017-09-06 01:36:32
【问题描述】:

PHP preg_grep 不工作?我是PHP初学者,也是英文交流。 该程序的执行结果以“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); 
?>

【问题讨论】:

标签: php preg-grep


【解决方案1】:

preg_grep returns 匹配行数组,因此您应该将代码重写为

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

可以简化整个脚本:

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

【讨论】:

    【解决方案2】:

    你也可以选择T-Regx:

    Pattern::inject('^@keyword', ['keyword' => $arr_keywords[$i]])
      ->forArray($open_news)
      ->filter();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多