원격 RSS 피드를 구문 분석하는 스크립트를 작성하고 그 결과를 JSON 형식으로 출력하려고합니다.PHP - 세미콜론이 누락 된 HTML 엔터티 다루기
원시 RSS 피드에는 , …
등과 같은 HTML 엔터티가 포함되어 있습니다.
나는 json_encode
이 올바른 출력을 생성 할 수 있도록, 먼저 원시 내용에 html_entity_decode
를 사용
$rss = new DOMDocument();
$rss->load('https://www.example.com/feed');
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => html_entity_decode($node->getElementsByTagName('title')->item(0)->nodeValue,ENT_COMPAT,'UTF-8'),
'desc' => html_entity_decode($node->getElementsByTagName('description')->item(0)->nodeValue,ENT_COMPAT,'UTF-8'),
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
);
$feed[] = $item;
}
$data = array();
foreach($feed as $item){
$data[] = array('url'=>$item['link'],'date'=>date('l, F d, Y g:i A',strtotime($item['date'])),'title'=>$item['title'],'desc'=>$item['desc']);
}
echo json_encode($data);
그것은 에 대한 몇 가지 HTML의 entites 세미콜론 누락 된 것을 제외하고 잘 작동합니다. html_entity_decode
은 인식하지 못합니다.
아마도 정규식을 사용하여 세미콜론없이 엔티티를 찾고 수정할 수 있다고 생각합니다. 그러나 그런 코드를 어떻게 작성해야할지 모르겠습니다. 어떤 생각?
이 문제를 해결할 다른 방법이 있습니까?
몇몇 샘플이 도움이 될 것이다! –
지금까지 나는'–'과'…'을 봅니다. 때로는 세미콜론을 사용하기도합니다. 때로는 그렇지 않습니다. – Shawn