[英]PHP preg_grep error?
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);
?>
preg_grep 返回匹配行的數組,因此您應該將代碼重寫為
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;
}
}
你也可以使用T-Regx :
Pattern::inject('^@keyword', ['keyword' => $arr_keywords[$i]])
->forArray($open_news)
->filter();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.