Сравните домены, которые читают из файла в php
У меня есть текстовый файл, который содержит домены и ips выглядит следующим образом
aaa.bbb.com 8.8.8.8
bbb.com 2.2.2.2
...
...
..
Как заменить bbb.com на 3.3.3.3, но не изменить aaa.bbb.com?
Вот часть моей функции, но не работает вообще.
Первая часть я ищу домен соответствия, читая его построчно из файла
после того, как я получил соответствующую запись, удалите ее.
Вторая часть я пишу новую строку в него.
$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" анализирует только URL с префиксом "http://" вместо домена.
2 ответа
Ну, извините за недоразумение, это должно сработать
<?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);
?>
Самое простое решение, которое я могу придумать, это использовать substr($line,0,7) == 'bbb.com'
вместо вашего strstr
сравнение.