Проверьте подкаст RSS / XML канал с помощью PHP

В настоящее время я работаю над способом проверки, соответствует ли какой-либо данный URL правильно отформатированному каналу подкаста.

Прямо сейчас у меня есть двухэтапный подход, который, кажется, действует как достаточно ловкий. Первый - это просто использование CURL для проверки ответа, но затем я использую validateOnParse в DOMDocument для проверки форматирования, т.е.

$dom = new DOMDocument();
$dom->validateOnParse = true;
if($dom->load($url, LIBXML_NOERROR)){

Который кажется немного сверхчувствительным, и иногда будет отклонять плохо структурированные каналы подкастов. Он также передает регулярные, не подкаст RSS-каналы.

Примечание. Я уверен, что плохо структурированные каналы подкастов по-прежнему приемлемы, так как я их протестировал, подписавшись на них через приложение подкастов.

Очевидно, validateOnParse не предназначен специально для проверки подкастов, но есть ли другой метод или библиотека, которая есть? Кажется, что со стороны производителей подкастов очень мало соответствия каким-либо стандартам.

-- ОБНОВИТЬ --

Любой, кто искал и смотрел на этот вопрос, скорее всего, найдет дубликат как подходящее решение. Однако в моем случае оказалось, что вместо плохого форматирования я получал ошибки, потому что некоторые запросы на $ url блокировались на основании того, что мой сервер предоставлял в качестве агента пользователя.

Проще говоря, решением этой проблемы было подделка пользовательского агента, что-то вроде этого:

$options  = array('http' => array('user_agent' => 'some user agent string'));
$context  = stream_context_create($options);

$file = file_get_contents($url,false,$context);

Похоже, это решило все случаи ложноотрицательных результатов, а дубликат, похоже, исправил ложные срабатывания.

1 ответ

Используйте знак "@" следующим образом:

@$dom->validateOnParse = true;

Поскольку не всегда вы найдете проверенные документы, знак "@" будет игнорировать любые предупреждения, которые могут возникнуть.

Другие вопросы по тегам