使用 PHP 从文本文件中删除一个或多个(不区分大小写)单词


FInd and Remove one or more (with case insensitive) word from text file with PHP

需要代码帮助才能获得像上面主题这样的结果,

到目前为止,我已经使用了这段代码

<?php
$data = file_get_contents("pg1-afcCup.txt");
$data = explode(" ", $data);
$remv = "Hosts";
foreach($data as $val) {
    if($remv != $val) {
        $newdata .= $val . " ";
        // print "$val<br />'n";
        }
    }
$newdata = substr($newdata, 0, -1); // remove trailing ,
print "<br /><br />String: $newdata";
$fp = fopen("pg2-afcCup.txt", "w+");
$fw = fwrite($fp, $newdata);
fclose($fp);
?>

上面的代码将删除pg1-afcCup.txt中区分大小写的"Hosts"字,并将其重写并保存在pg2-afcCup.txt中。

如何使其不敏感,并找到不止一个单词(用更多单词填充$remv)?

PS:我试过preg_replace但没有成功...

试试这个

<?php 
$data = file_get_contents("pg1-afcCup.txt");
$data = explode(" ", $data);
$remv = "hosts";
$newdata = "";
foreach($data as $val) {
if($remv != strtolower($val)) {
$newdata .= $val . " ";
// print "$val<br />'n";
}
}
$newdata = substr($newdata, 0, -1); // remove trailing ,
print "<br /><br />String: $newdata";
$fp = fopen("pg2-afcCup.txt", "w+");
$fw = fwrite($fp, $newdata);
fclose($fp);
?>

它将字符串转换为小写,然后进行检查。所以,这应该可以正常工作。

对于多个过滤器

<?php 
$data = file_get_contents("pg1-afcCup.txt");
$data = explode(" ", $data);
$remv = array("hosts","other", "somemore");
$newdata="";
foreach($data as $val) {
if (! in_array(strtolower($val),$remv) ) {
$newdata .= $val . " ";
// print "$val<br />'n";
}
}
$newdata = substr($newdata, 0, -1); // remove trailing ,
print "<br /><br />String: $newdata";
$fp = fopen("pg2-afcCup.txt", "w+");
$fw = fwrite($fp, $newdata);
fclose($fp);
?>

你可以用preg_replace试试这个

<?php
$data = file_get_contents("pg.txt");
$data = explode(" ", $data);
$remv = "Hosts";
$pattern = '/^hosts$/i'; # if you need to erase the exact word
#$pattern = '/hosts/i'; # erasing a substring
foreach($data as $val) {
    $newdata .= preg_replace($pattern, "", $val) . " ";
}
$newdata = substr($newdata, 0, -1); // remove trailing ,
print "<br /><br />String: $newdata";
$fp = fopen("pg2-afcCup.txt", "w+");
$fw = fwrite($fp, $newdata);
fclose($fp);
?>