Как проверить HTML с RSS? - PullRequest
       25

Как проверить HTML с RSS?

2 голосов
/ 21 августа 2009

Я пытаюсь освоить HTML / CSS / PHP разработку, и мне было интересно, как мне проверить свой код, если он содержит контент, которым я не могу управлять, например, RSS-канал?

Например, моя домашняя страница - это документ .php, содержащий HTML и PHP-код. Я использую PHP, чтобы создать простую программу чтения RSS (с использованием SimpleXML), чтобы получать некоторые каналы из другого блога и отображать их на моей веб-странице.

Теперь, насколько это возможно, я хотел бы попытаться написать правильный HTML. Поэтому я предполагаю, что способ сделать это - просмотреть страницу в браузере (я использую NetBeans, поэтому я нажимаю «Страница предварительного просмотра»), скопировать источник (используя View Source) и вставить его в валидатор W3C. Когда я это делаю, я получаю всевозможные ошибки проверки (например, «не удается сгенерировать системный идентификатор для общей сущности» и «общая сущность» blogId «не определен и нет сущности по умолчанию»), поступающие из канала RSS.

Я следую правильному процессу для этого? Стоит ли просто игнорировать все ошибки, отмеченные в ленте RSS?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 21 августа 2009

В этом случае, когда вы имеете дело с ненадежным каналом без контроля, у вас есть ограниченные возможности для обеспечения безопасности.

Два, которые приходят на ум, это:

  1. используйте что-то вроде striptags(), чтобы убрать все форматирование содержимого RSS-канала.
  2. используйте библиотеку, подобную HTMLPurifier, для проверки и очистки содержимого перед выводом.

Для повышения производительности следует кэшировать готовый к выводу контент, к вашему сведению.

-

Относительно кэширования

Есть много способов сделать это ... Если вы используете фреймворк, скорее всего, у него уже есть способ сделать это. Zend_Cache - это класс, предоставляемый платформой Zend, например.

Если у вас есть доступ к memcached, то это очень просто. Но если нет, то есть много других способов.

Общая концепция заключается в том, чтобы подготовить вывод, а затем сохранить его, готовый к выводу много раз. Таким образом, вы не несете затрат на извлечение и подготовку выходных данных, если они просто будут одинаковыми каждый раз.

Рассмотрим этот код, который будет только загружать и форматировать RSS-канал каждые 5 минут ... Все остальные запросы - быстрая команда readfile().

# When called, will prepare the cache
function GenCache1()
{
    //Get RSS feed
    //Parse it
    //Purify it
    //Format your output
    file_put_contents('/tmp/cache1', $output);
}

# Check to see if the file is available
if(! file_exists('/tmp/cache1'))
{
    GenCache1();
}
else
{
    # If the file is older than 5 minues (300 seconds), then regen
    $a = stat('/tmp/cache1');
    if($a['mtime'] + 300 < time())
       GenCache1();
}


# Now, simply use this code to output
readfile('/tmp/cache1');
1 голос
/ 21 августа 2009

Я обычно использую HTML Tidy для очистки данных извне системы.

0 голосов
/ 21 августа 2009

RSS всегда должен быть XML-совместимым. Поэтому я предлагаю вам использовать XHTML для вашего сайта. Поскольку XHTML также совместим с XML, у вас не должно быть ошибок при проверке страницы XHTML с RSS.

EDIT: Конечно, это имеет значение, только если содержимое, которое вы получаете, является действительным XML ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...