1

ドメインを含むtxtファイルがあり、ipsは次のようになります

aaa.bbb.com 8.8.8.8
bbb.com 2.2.2.2
...
...
..

bbb.com を 3.3.3.3 に置き換えるにはどうすればよいですか? aaa.bbb.com は変更しません。

これは私の機能の一部ですが、まったく機能していません。


最初の部分一致したレコードを取得した後、ファイルから1行ずつ読み取って一致ドメインを検索し、削除します。
2 番目の部分では、新しい行を書き込みます。

    $filename = "record.txt";
    $lines = file($filename);

    foreach($lines as $line) 
    if(!strstr($line, "bbb.com") //I think here is the problem core
    $out .= $line;

    $f = fopen($filename, "w");
    fwrite($f, $out);
    fclose($f);



    $myFile = "record.txt";
    $fh = fopen($myFile, 'a') or die("can't open file");
    $stringData = "bbb.com\n 3.3.3.3\n";
    fwrite($fh, $stringData);
    fclose($fh);

コードを実行した後、aaa.bbb.com と bbb.com の両方が削除されました。この問題を解決するにはどうすればよいですか?

「parse_url」を試してみましたが、「parse_url」はドメインではなく「http://」プレフィックスを持つ URL のみを解析します。

4

2 に答える 2

1

誤解して申し訳ありませんが、これはうまくいくはずです:

<?php

$file = "record.txt";
$search = "bbb.com";
$replace = "3.3.3.3";

$open = file_get_contents($file);
$lines = explode(PHP_EOL, $open);
$dump = "";
foreach($lines as $line){
    $pos = strpos($line, $search);
    if($pos === false){
    echo "<b>$line</b>";
        $dump .= $line.PHP_EOL;
    }else{
        if($pos !== 0){
            $dump .= $line.PHP_EOL;
        }else{
            $dump .= $search." ".$replace.PHP_EOL;
        }
    }
}
$dump = substr($dump,0,-1);
file_put_contents($file, $dump);

?>
于 2012-06-22T09:57:58.153 に答える
0

私が考えることができる最も簡単な解決策は、比較substr($line,0,7) == 'bbb.com'の代わりに使用することです。strstr

于 2012-06-22T09:07:58.923 に答える