현재 Magpie RSS을 사용하고 있지만 RSS 또는 Atom 피드가 제대로 구성되지 않은 경우 가끔 넘어집니다. PHP로 RSS와 Atom 피드를 파싱 할 수있는 다른 옵션이 있습니까?PHP로 RSS/Atom 피드를 구문 분석하는 가장 좋은 방법
답변
귀하의 다른 옵션은 다음과 같습니다 .
물론 RSS 형식이 아닌 RSS/Atom 피드를 테스트하지는 않았으므로 그 내용과 잘 맞지 않습니다. Google 표준이 상당히 표준에 부합한다고 가정합니다. :)
젠드 피드 http://framework.zend.com/manual/en/zend.feed.html – artur
나는 그런 코멘트를 좋아하지 않아 링크를 제공하지 않는다. 당신이 구글처럼 보이고 몇 가지 최고의 결과로 연결됩니다. 특히 asker가 RSS를 경험하고 더 나은 파서가 필요하기 때문에. –
누군가가 약간의 조언을 필요로하는 경우에, 마지막 RSS는 위에 나열된 세 가지 중에서 가장 쉽습니다. 오직 하나의 파일 만 "요구"할 수 있으며 알맞은 배열 출력으로 5 줄 내에서 RSS를 가져올 수 있습니다. – Raptor
내가 구글 리더 피드를 구문 분석 SimplePie를 사용하고 꽤 잘 작동하고 괜찮은 기능 세트가 있습니다
HTML 깔끔한 라이브러리가 일부 잘못된 XML 파일을 고칠 수 있습니다. 파서에 전달하기 전에 피드를 실행하면 도움이 될 수 있습니다.
저는 항상 the SimpleXML functions built in to PHP을 사용하여 XML 문서를 구문 분석했습니다. 직관적 인 구조를 가진 몇 안되는 일반 파서 중 하나입니다. RSS 피드와 같은 특정 클래스에 대해 의미있는 클래스를 만드는 것이 매우 쉽습니다. 또한 XML 경고 및 오류를 감지하고 HTML 깔끔한 (Ceejayoz 언급 한 바와 같이) 소스를 실행하여이를 정리하고 다시 시도 할 수 있습니다. 피드는 XML을 잘 형성되지 않는 경우
class BlogPost
{
var $date;
var $ts;
var $link;
var $title;
var $text;
}
class BlogFeed
{
var $posts = array();
function __construct($file_or_url)
{
$file_or_url = $this->resolveFile($file_or_url);
if (!($x = simplexml_load_file($file_or_url)))
return;
foreach ($x->channel->item as $item)
{
$post = new BlogPost();
$post->date = (string) $item->pubDate;
$post->ts = strtotime($item->pubDate);
$post->link = (string) $item->link;
$post->title = (string) $item->title;
$post->text = (string) $item->description;
// Create summary as a shortened body and remove images,
// extraneous line breaks, etc.
$post->summary = $this->summarizeText($post->text);
$this->posts[] = $post;
}
}
private function resolveFile($file_or_url) {
if (!preg_match('|^https?:|', $file_or_url))
$feed_uri = $_SERVER['DOCUMENT_ROOT'] .'/shared/xml/'. $file_or_url;
else
$feed_uri = $file_or_url;
return $feed_uri;
}
private function summarizeText($summary) {
$summary = strip_tags($summary);
// Truncate summary line to 100 characters
$max_len = 100;
if (strlen($summary) > $max_len)
$summary = substr($summary, 0, $max_len) . '...';
return $summary;
}
}
시작 태그가없는 종료 태그가 있습니다. ;) –
글쎄, 하나 있었지만, 그 위에 빈 줄이 없어서 SO의 코드 포맷터에 의해 먹혀 들었다. 관련 메모에서 대문자로 문장을 시작하지 않았습니다. ;) –
'$ feed_uri = $ feed_or_url;'을'$ feed_uri = $ file_or_url;'로 변경하십시오. ... 그 외,이 코드를 보내 주셔서 감사합니다! 그것은 위대한 작품! – Tim
이, 당신은, 예외없이 그것을 거부하지 야지 :
는 SimpleXML을 사용하여이 매우 거친, 간단한 클래스를 생각해 보자. 피드 작성자 a bozo에게 전화를 걸 수 있습니다.
그렇지 않으면 당신은 HTML이에 결국 것을 엉망으로 도로를 포장하고 있습니다. 개인적으로
+1, 올바른 형식이 아닌 XML을 처리하지 마십시오. 우리는 그들과 함께 나쁜 경험을 했어, 나를 믿어, 그것은 큰 고통이었다 : ( –
그러나 프로그래머는 비즈니스 파트너를 선택하지 못하고 주어진 것을 파싱해야한다. –
범용 RSS/Atom 피드 리더기? 부적절한 XML 파일이 HTML을 엉망으로 만들 수 있다면, 누가 Bozo인가? – yPhil
내가 BNC 고급 나는, 4 개 라인
를 매우 쉽게 사용할 수있는 템플릿 시스템을 좋아 Parser- 피드 사용 rss를 배열로 가져 오십시오. 더 복잡한 솔루션을
$feed = implode(file('http://yourdomains.com/feed.rss'));
$xml = simplexml_load_string($feed);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
$feed = new DOMDocument();
$feed->load('file.rss');
$json = array();
$json['title'] = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
$json['description'] = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('description')->item(0)->firstChild->nodeValue;
$json['link'] = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('link')->item(0)->firstChild->nodeValue;
$items = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('item');
$json['item'] = array();
$i = 0;
foreach($items as $key => $item) {
$title = $item->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
$description = $item->getElementsByTagName('description')->item(0)->firstChild->nodeValue;
$pubDate = $item->getElementsByTagName('pubDate')->item(0)->firstChild->nodeValue;
$guid = $item->getElementsByTagName('guid')->item(0)->firstChild->nodeValue;
$json['item'][$key]['title'] = $title;
$json['item'][$key]['description'] = $description;
$json['item'][$key]['pubdate'] = $pubDate;
$json['item'][$key]['guid'] = $guid;
}
echo json_encode($json);
또 다른 위대한 무료로 파서 - 그것은 매우 가벼운 (단 3킬로바이트) 사용하기 간단 http://bncscripts.com/free-php-rss-parser/ !
은 gzinflate 및 base64_decode를 사용하여 "훌륭함"이라고 말하며 일반적으로 보안을 위해 사용하지 않습니다. –
나는 구문 분석하는 간단한 스크립트를 소개하고자 RSS :
$i = 0; // counter
$url = "http://www.banki.ru/xml/news.rss"; // url to parse
$rss = simplexml_load_file($url); // XML parser
// RSS items loop
print '<h2><img style="vertical-align: middle;" src="'.$rss->channel->image->url.'" /> '.$rss->channel->title.'</h2>'; // channel title + img with src
foreach($rss->channel->item as $item) {
if ($i < 10) { // parse only 10 items
print '<a href="'.$item->link.'">'.$item->title.'</a><br />';
}
$i++;
}
-http://www.scriptol.com/rss/rss-reader.php이 - 한 가지 문제와 함께 사용자 만 사용하는 완전하지만 간단한 파서 ...
- 1. 키워드에 대한 단일 트위터 피드를 구문 분석하는 가장 좋은 방법
- 2. Ruby에서 테이블을 구문 분석하는 가장 좋은 방법
- 3. Java에서 Java를 구문 분석하는 가장 좋은 방법
- 4. Json을 구문 분석하는 가장 좋은 방법은 무엇입니까?
- 5. RSS 피드를 사용하는 가장 좋은 방법
- 6. RSS 피드를 결합하고 구문 분석하는 방법은 무엇입니까?
- 7. Twitter 용 레일스에서 JSON을 구문 분석하는 가장 좋은 방법 API
- 8. PHP5를 사용하여 PDF 양식 필드를 구문 분석하는 가장 좋은 방법
- 9. Python을 사용하여 VisualStudio .csproj 파일을 구문 분석하는 가장 좋은 방법
- 10. iPhone에서 rss 피드를 구문 분석하는 방법은 무엇입니까?
- 11. pixdaus 피드를 구문 분석하는 동안 문제가 발생했습니다.
- 12. 텍스트 문서를 분석하는 가장 좋은 방법
- 13. blogger.com 용 RSS 피드를 만들고 구문 분석하는 방법
- 14. Actionscript3 : Querystring 인수를 보내고 XML 피드를 구문 분석하는 방법
- 15. Titanium Mobile App에서이 JSON 피드를 구문 분석하는 방법
- 16. JS에서이 XML을 구문 분석하는 가장 빠른 방법
- 17. PHP로 중첩 된 큰 XML 시트를 구문 분석하는 가장 좋은 방법은 무엇입니까?
- 18. xmpp에서 xml 스탠자를 분석하는 가장 좋은 방법
- 19. 로그 파일을 파이썬 목록으로 구문 분석하는 가장 좋은 방법은 무엇입니까?
- 20. 리터럴 구문 구문 검색에 가장 좋은 방법
- 21. PHP로 .plist 파일을 구문 분석하는 방법은 무엇입니까?
- 22. PHP로 HTML을 구문 분석하는 방법은 무엇입니까?
- 23. Sh/Bash 및 PHP에서 구성 매개 변수를 구문 분석하는 가장 좋은 방법/가장 쉬운 방법
- 24. PHP로 PDF를 만드는 가장 좋은 방법
- 25. XMI를 구문 분석하는 방법?
- 26. 구문 분석하는 방법 링크
- 27. SMS 이메일을 구문 분석하는 가장 좋은 방법은 무엇입니까?
- 28. NSTimer를 사용하여 백그라운드에서 XML을 구문 분석하는 가장 좋은 방법은 무엇입니까
- 29. Java에서 XML 문자열을 구문 분석하는 가장 좋은 방법은 무엇입니까?
- 30. Ruby에서 웹 페이지를 구문 분석하는 가장 좋은 방법은 무엇입니까?
있다 이 요청은 대부분의 피드 리더가 PHP의 핵심 XML 리더를 사용하고 있으며 XML 표준에 따라 XML 형식이 적절하지 않은 경우 XML 표준을 따르지 않을 경우 XML 리더를 사용하지 않고 텍스트 리더를 사용할 수 있습니다. 그러나로드 서버의 성능이 크게 향상됩니다. 나는 이것이 사람들에게 XML 피드 리더를 사용할 때의 단점을 인식하게 만들었다. –
유효하지 않은 XML을 구문 분석하지 마라. 근원을 비난하십시오. – Lothar