Проблема с чтением RSS

166
08 апреля 2019, 03:40

такая проблема, есть php-скрипт, который парсит данные из RSS на мой сайт.

function getFeed($feed_url) 
{
    error_reporting(E_ALL & ~E_WARNING);
    try {
        $content = file_get_contents($feed_url);
        $x = new SimpleXmlElement($content);
        echo "<center style='color:red; margin:-5px 0;'><h3>" . $x->channel->title . "</h3></center>";
        echo "<ul>";
        foreach($x->channel->item as $entry) {
            echo    "<li>
                        <a href='$entry->link' title='$entry->title'>" . $entry->title . "</a><br>
                        <b style='color:#ce0a8a;'>Дата публикации: <span style='color:#199104;'>" . $entry->pubDate . "</span></b><br>
                        <span>" . $entry->description . "</span>
                    </li><hr size='3' noshade>";
        }
        echo "</ul>";
    }
    catch (Exception $e) {
        echo    "<div style='margin:5px 0 16px;'>
                    <b style='font-size:18px; margin:0 10px; color:red;'>Не удалось обработать RSS ленту. Возможно, вы ввели неверный адрес. Попробуйте ввести другой адрес.</b><hr size='2' noshade>
                </div>";
    }
}

Этот скрипт рабочий, но при скармливании ему ссылки на RSS, где присутствуют опечатки (например, вместо &quote; пишется &quote,) выскакивает ошибка парсинга.

Вопрос - как заменить все спец символы вида &(...),

на &(...); ? Доступа к редактированию XML файла, в котором опечатки, у меня нет. Но прочитать его нужно.

Answer 1

В массивы $need и $repl добавляете ваши значения для поиска и замены соответственно:

$str = '&quote, текст &quote,';
$need = ['&quote,'];
$repl = ['&quote;'];
$str = str_replace($need, $repl, $str);
echo $str;

С помощью регулярных выражений:

$str = '&quote, текст &quote,';
$patt = '~(&\pL+),~';
$str = preg_replace($patt, '$1;', $str);
echo $str;

Шаблон соответствует подстроке, если:

  1. подстрока начинается с символа &
  2. за которым следует одна или более букв латинского алфавита \pL+
  3. после которых следует символ ,
READ ALSO
PHP RAR Русские символы Cyrillic.

PHP RAR Русские символы Cyrillic.

Есть стандартный метод взятый с официального сайта php который извлекает файлы с архива:

166
Объединить 3 массива PHP 7

Объединить 3 массива PHP 7

Нужно объединить 3 массива в один

160
Как изменить битность версии php на x64?

Как изменить битность версии php на x64?

У меня ноутбук с установленной лицензионной windows 10 x64На локальный OpenServer x64 установил чистый сайт на wordpress, хочу импортировать на него данные...

178