За последние 24 часа нас посетили 41142 программиста и 1813 роботов. Сейчас ищут 1045 программистов ...

preg_match_all и удаление

Тема в разделе "PHP для новичков", создана пользователем sstotenkopf, 13 сен 2011.

  1. sstotenkopf

    sstotenkopf Активный пользователь

    С нами с:
    7 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Добрый вечер, работаю с xml файлом, формат: <id>226724117</id> с помощью preg_match_all вычленяю номер id, после работы с ним нужно удалить строку, как ее удалить вместе с <id> </id>?
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    str_replace
    preg_replace
     
  3. sstotenkopf

    sstotenkopf Активный пользователь

    С нами с:
    7 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Я имею ввиду как включить в синтаксис помимо result[1][1] еще и <id> </id>
     
  4. sstotenkopf

    sstotenkopf Активный пользователь

    С нами с:
    7 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Ну так что?
     
  5. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    sstotenkopf
    покажите, как делаете Вы
    а мы поправим
     
  6. sstotenkopf

    sstotenkopf Активный пользователь

    С нами с:
    7 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    <?php
    $srt = '161379734';
    $fl = "inc/friends1.xml";
    $rep = "\n";
    $sr = file($fl);
    $file = str_replace($srt,$rep,$sr);
    $count = count($file);
    $fp = fopen($fl,"w");


    for($i=0;$i<$count;$i++)

    fwrite($fp,$file[$i]);
    fclose($fp);

    ?>


    как добавить в replace помимо $srt еще и <id> </id> чтобы не выдавало ошибок и удаляло, не знаю, перепробовал много способов
     
  7. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    PHP:
    1. <?php
    2. $user_id = '16137';
    3. $content = file_get_contents('inc/friends1.xml');
    4. $content = str_replace("<id>$user_id</id>", "\n", $content);
    5. file_put_contets($content);
    6.  
    Но кажется вам я рекомендовал воспользоваться утилитой diff, почему пренебрегли советом?
     
  8. sstotenkopf

    sstotenkopf Активный пользователь

    С нами с:
    7 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Хоть звучит и глупо, но я бы потом запутался в скрипте)
     
  9. sstotenkopf

    sstotenkopf Активный пользователь

    С нами с:
    7 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Спасибо! Работает... только на месте удаление остаются пробелы
     
  10. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    замените "\n" на ""
    возможно также "...</td>" на "...</td>\n"
    плюс не забывайте про возможный \r

    ps на самом деле пользоваться утилитой diff одно удовольствие: загоняешь на вход два файла, на выходе получаешь разницу. на мой взгляд достаточно просто
     
  11. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    можно trim'ить строки.
     
  12. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    krow7
    не читал, но осуждаю?
     
  13. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    topas
    сори, но не понял Вас.