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

Тема в разделе "PHP", создана пользователем Acidrayne, 19 фев 2011.

Модераторы: latteo
  1. Acidrayne

    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] Помогите пожалуйста, очень надо!
     
  2. phantom

    phantom Постоялец

    Регистр.:
    17 апр 2006
    Сообщения:
    129
    Симпатии:
    14
    Протестировал скрипт у себя - все работает, пишет что совпадения есть.
     
  3. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    А у вас windows русская или английская?
     
  4. VandJ

    VandJ

    Регистр.:
    8 апр 2008
    Сообщения:
    318
    Симпатии:
    113
    Поставьте trim(). Не находит скорей всего из-за пробелов…
    PHP:
    if(trim ($hosts[$j]) == $a){echo"совпадения есть";} 
     
    Acidrayne нравится это.
  5. Shery

    Shery Создатель

    Регистр.:
    10 фев 2009
    Сообщения:
    27
    Симпатии:
    2
    на win7 работает нормально.
     
  6. phantom

    phantom Постоялец

    Регистр.:
    17 апр 2006
    Сообщения:
    129
    Симпатии:
    14
    Win7 x64 EN. Но мне пришлось копировать файл hosts в другую папку, потому что для доступа к файлу нужны права администратора. Но если в вашем случае php получает доступ к файлу, то скорее всего проблему из-за лишних пробелов, как было сказано выше.
     
  7. Delk0

    Delk0

    Регистр.:
    26 мар 2010
    Сообщения:
    284
    Симпатии:
    47
    Не забывайте что в винде перенос строки выглядит как \r\n, так что после explode остается \r в конце строки.
    Вообщем trim обязателен.
     
    Acidrayne нравится это.
  8. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    да действительно trim() помог! Как я мог про это забыть!
     
  9. DMAxXx

    DMAxXx Постоялец

    Регистр.:
    28 июл 2010
    Сообщения:
    66
    Симпатии:
    4
    trim() добавил и всё работает.
     
  10. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    скажите а как пропустить знаки комментов "#" что бы они не добавлялись в массив