Редактор файла hosts

Acidrayne

Местный житель
Регистрация
30 Сен 2007
Сообщения
296
Реакции
20
Добрый день, кто нибудь сталкивался с редактированием файла hosts в windows ?

Мне нужно добавлять и удалять записи из этого файла с помощью скрипта! Как добавлять я уже разобрался а вот как удалить запись не пойму:(

вот код:

PHP:
$host =  file_get_contents ("C:/widows/system32/drivers/etc/hosts");
      $hosts = explode("\n",$host); // разбиваем в массив
      $a = "127.0.0.1 smarts";
    //$key = array_search($a, $hosts, true); // тут нулевое значение, хотя строка 127.0.0.1 smarts присутствует в файле

   $count=count($hosts); //пробуем перебрать значения циклом
   while ($j<$count)
{

if($hosts[$j] == $a){echo"совпадения есть";}
$j++;}

Вообщем после таких вот манипуляций, я не могу найти свою запись в файле! Ни цикл и array_search не находят вхождения в массив моей записи, но при просмотре с помощью print_r($hosts) моя запись есть в hosts[19] Помогите пожалуйста, очень надо!
 
Протестировал скрипт у себя - все работает, пишет что совпадения есть.
 
А у вас windows русская или английская?
 
Поставьте trim(). Не находит скорей всего из-за пробелов…
PHP:
if(trim ($hosts[$j]) == $a){echo"совпадения есть";}
 
на win7 работает нормально.
 
Win7 x64 EN. Но мне пришлось копировать файл hosts в другую папку, потому что для доступа к файлу нужны права администратора. Но если в вашем случае php получает доступ к файлу, то скорее всего проблему из-за лишних пробелов, как было сказано выше.
 
Не забывайте что в винде перенос строки выглядит как \r\n, так что после explode остается \r в конце строки.
Вообщем trim обязателен.
 
да действительно trim() помог! Как я мог про это забыть!
 
trim() добавил и всё работает.
 
скажите а как пропустить знаки комментов "#" что бы они не добавлялись в массив
 
Назад
Сверху