За последние 24 часа нас посетили 22965 программистов и 1241 робот. Сейчас ищут 749 программистов ...

Поиск и замена в спарсенном тексте

Тема в разделе "Сделайте за меня", создана пользователем dontdonkmedonks, 16 янв 2017.

  1. dontdonkmedonks

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

    С нами с:
    10 фев 2016
    Сообщения:
    19
    Симпатии:
    2
    Добрый день, уважаемые знатоки, понимаю что проблема совсем пустяцкая, но в php не силен и без вас не разберусь. Подскажите, пожалуйста, есть простой скрипт парсера RSS курса валют, который выводит результат вида: 1 Евро 2,0699 | 1 Доллар США 1,9548 | 100 Российских рублей 3,2784
    что необходимо в нем поменять чтобы результат был: <span class="euro"></span> 2,0699 <span class="euro"></span> 1,9548 <span class="euro"></span> 3,2784 ? Т.е. я хочу заменить текст на иконки валют. Заранее благодарен за помощь
    Код (Text):
    1. <?
    2. // кешируем RSS файлик
    3. // место куда пишем файлик кэша
    4. $filename = $_SERVER['DOCUMENT_ROOT']."/myphp/cache/kurs.php";
    5.  
    6. // проверяем насколько старый файлик
    7. $modif=time()-@filemtime ("$filename");
    8.  
    9. // если в кэше нет файла или он слишком старый - обновляем
    10. if(!file_exists($filename) || $modif>"7200")
    11. {
    12. $rss = file_get_contents("http://www.nbrb.by/RSS/?p=RatesDaily");
    13.  
    14. $handle = fopen ("$filename", "w");
    15.  
    16. fwrite($handle, $rss);
    17.  
    18. fclose($handle);
    19. }
    20.  
    21. // читаем файлик с помощью Simple XML
    22. $RSS = simplexml_load_file($filename);
    23.  
    24. // для любопытных что жк мы там получили :-)
    25. //VAR_DUMP($RSS);
    26.  
    27. foreach ($RSS->channel->item as $item) {
    28.  
    29. // при надобности перекодируем полученные данные в нужную кодировку
    30. /*$item->description = iconv("UTF-8","WINDOWS-1251",$item->description);
    31. $item->title = iconv("UTF-8","WINDOWS-1251",$item->title); */
    32.  
    33.  
    34.         echo $item->description;        //выводим на печать текст статьи
    35.  
    36.         }
    37. ?>
     
  2. dontdonkmedonks

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

    С нами с:
    10 фев 2016
    Сообщения:
    19
    Симпатии:
    2
    igordata и denis01 нравится это.
  3. Emilien

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

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    PHP:
    1. <?php
    2.  
    3. // кешируем RSS файлик
    4. // место куда пишем файлик кэша
    5. $filename = $_SERVER['DOCUMENT_ROOT']."/myphp/cache/kurs.php";
    6.  
    7. // проверяем насколько старый файлик
    8. $modif=time()-@filemtime ("$filename");
    9.  
    10. // если в кэше нет файла или он слишком старый - обновляем
    11. if(!file_exists($filename) || $modif>"7200")
    12. {
    13. $rss = file_get_contents("http://www.nbrb.by/RSS/?p=RatesDaily");
    14.  
    15. $handle = fopen ("$filename", "w");
    16.  
    17. fwrite($handle, $rss);
    18.  
    19. fclose($handle);
    20. }
    21.  
    22. // читаем файлик с помощью Simple XML
    23. $RSS = simplexml_load_file($filename);
    24.  
    25. // для любопытных что жк мы там получили :-)
    26. //VAR_DUMP($RSS);
    27.  
    28. $replace = array(
    29.     '1 Евро' => '<span class="euro"></span>',
    30.     '1 Доллар США' => '<span class="usd"></span>',
    31.     '100 Российских рублей' => '<span class="rub"></span>'
    32. );
    33.  
    34. echo strtr($RSS->channel->item->description, $replace);
     
    denis01 нравится это.
  4. dontdonkmedonks

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

    С нами с:
    10 фев 2016
    Сообщения:
    19
    Симпатии:
    2
    почему то результат такой же, без изменений??
     
  5. Emilien

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

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    Там RSS лента в кодировке UTF-8.
    Сам скрипт нужно сохранить в той же кодировке.
     
  6. dontdonkmedonks

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

    С нами с:
    10 фев 2016
    Сообщения:
    19
    Симпатии:
    2
    Спасибо большое, это я пропустил, все работает!