2012-08-02 2 views
3

나는 RSS 피드를 얻으려고 노력하면서 몇 시간 동안 일해 왔습니다. 문제는 특수 문자입니다. 데이터가 웹 사이트의 목록에 나열되어 있지만 RSS 피드도 필요합니다. 제목은 "&"이며 $ amp;로 쓰여 있습니다. htmlspecialchars를 사용하면 $ amp; amp; 내가하지 않으면 유효성 검사기는 "&"때문에 오류를 제공합니다. "&"을 쓸 수 없거나 html이 올바르게 표시되지 않습니다. 나는 그것을 혼자두고 Cdata 태그에 넣으려고하지만 그것도 작동하지 않았다. 꽤 잘 문제까지 http://montanafarmersunion.com/?hd=news&id=newsRSS 피드 및 특수 문자

+0

코드를 표시하십시오. 우리는 당신이 시도한 것을 보지 않고는 도울 수 없습니다. –

+0

여기에 '<! [CDATA ['.trim (htmlspecialchars ($ art [1], ENT_NOQUOTES, 'UTF-8'))의 행이 있습니다. ]]>'art [1]은 배열이고 본문은 다음과 같다 :'8 월 1 일 : 농림부 장관 ' – Elliott

답변

2

RSS Advisory Board page 금액 : 여기

http://montanafarmersunion.com/rss.php이 같은 목록의 HTML입니다 : 여기

피드입니다

사양 여부에 대한 명확성이 부족했다 HTML은 으로 애그리 게이터가 다른 문자 데이터를 처리하는 방법에 넓은 차이가있는의 항목 설명 이외의 요소에서 허용되는 입니다.요소. 따라서 게시자가 문자를 "&"및 "<"으로 인코딩하는 방법을 결정하는 것이 특히 어렵습니다. 은 XML로 인코딩되어야합니다.

즉 올바른 길은 없습니다. 이론 상으로는 CDATA 태그를 사용하지 않고 HTML 제목을 인코딩하는 것으로 벗어날 수 있어야합니다. 예를 들어, 파이어 폭스 & IE8에서 나를 위해 작동 :

$title = 'August 1st: MFU President &amp; friends on farm bill'; 
echo '<title>'.trim($title).'</title>'; 

그러나 W3 RSS validator 반대하는 것이 좋습니다 (이 당신이 사용하고있는 것은?) 때문에 위의 링크 된 페이지를 기반으로 &amp;,의. 그들은 &<에 대해서만 16 진수 문자 참조를 사용하도록 제안합니다. 이를 구현하는 가장 쉬운 방법은 아마 간단한 str_replace입니다 :

$title = 'August 1st: MFU President & friends on farm bill'; 
$title = str_replace(array('&', '<'), array('&#x26;', '&#x3C;'), $title); 
echo '<title>'.trim($title).'</title>'; 

이 잘못되고 있음을 보여줍니다

내가뿐만 아니라 this blog post을 언급 가고픈 충동이 들게, (주 내가 시작 문자열 베어 &을했습니다) 항상 모든 독자를 행복하게 만드는 방법. 그러나 마지막 방법은 그것들 대부분을 얻어야합니다.