rss값을 받아왔는데 제목에 <b>태그가 없어지질 않아서요

rss값을 받아왔는데 제목에 <b>태그가 없어지질 않아서요

QA

rss값을 받아왔는데 제목에 <b>태그가 없어지질 않아서요

본문

http://developer.naver.com/wiki/pages/Blog
가운데 있는 샘플 URL  소스를 이용하여

 

 

http://www.kyoppong.com/bbs/board.php?bo_table=g74
게시판에서 제목을 뿌려주는데요

 

 

제목에 <b>태그가 나오는데 그걸 안보이게 하려는데 도저히 찾을수가 없어서요ㅡㅡ

아예 태그안나오고 글씨만 보이던지, 아님 태그가 제대로 먹던지..둘중 하나만 되면 좋겠습니다.

 

사용중인 스킨의 list.skin.php 파일 혹은 rss_reader_lib 파일

둘중에 하나에서 처리해 주면 될거 같기도 한데..몇시간째 헤매고 있습니다.

도움좀 부탁 드립니다.ㅠㅠ

 

1) 리스트 파일에서 노출되는 부분은   

<?=cut_str(get_text($item['title'],1), 120, "...")?> 했는데 적용이 안되구요

 

2)아무래도 아래 rss_reader_lib 파일 중 어딘가를 손대야 할거 같습니다.

--------------------------------------------------------------------------

<?php


// 버전 : 0.9.1
// 사이트 : http://lastrss.webdot.cz/
// 라이센스 : GNU
//======================================================================

class lastRSS {
 // -------------------------------------------------------------------
 // Public properties
 // -------------------------------------------------------------------
 var $default_cp = 'UTF-8';
 var $CDATA = 'nochange';
 var $cp = '';
 var $items_limit = 0;
 var $stripHTML = False;
 var $date_format = '';

 // -------------------------------------------------------------------
 // Private variables
 // -------------------------------------------------------------------
 var $channeltags = array ('title', 'link', 'description', 'language', 'copyright', 'managingEditor', 'webMaster', 'lastBuildDate', 'rating', 'docs');
 var $itemtags = array('title', 'link', 'description', 'author', 'category', 'comments', 'enclosure', 'guid', 'pubDate', 'source');
 var $imagetags = array('title', 'url', 'link', 'width', 'height');
 var $textinputtags = array('title', 'description', 'name', 'link');

 // -------------------------------------------------------------------
 // Parse RSS file and returns associative array.
 // RSS 파일을 파싱하여 배열로 리턴시킴
 // 인자 : rss url
 // 반환값 : 파싱된 결과값
 // -------------------------------------------------------------------
 function Get ($rss_url) {
  // If CACHE ENABLED
  if ($this->cache_dir != '') {
   $cache_file = $this->cache_dir . '/rsscache_' . md5($rss_url);
   $timedif = @(time() - filemtime($cache_file));
   if ($timedif < $this->cache_time) {
    // cached file is fresh enough, return cached array
    $result = unserialize(join('', file($cache_file)));
    // set 'cached' to 1 only if cached file is correct
    if ($result) $result['cached'] = 1;
   } else {
    // cached file is too old, create new
    $result = $this->Parse($rss_url);
    $serialized = serialize($result);
    if ($f = @fopen($cache_file, 'w')) {
     fwrite ($f, $serialized, strlen($serialized));
     fclose($f);
    }
    if ($result) $result['cached'] = 0;
   }
  }
  // If CACHE DISABLED >> load and parse the file directly
  else {
   $result = $this->Parse($rss_url);
   if ($result) $result['cached'] = 0;
  }
  // return result
  return $result;
 }
 
 // -------------------------------------------------------------------
 // Modification of preg_match(); return trimed field with index 1
 // from 'classic' preg_match() array output
 // -------------------------------------------------------------------
 function my_preg_match ($pattern, $subject) {
  // start regullar expression
  preg_match($pattern, $subject, $out);

  // if there is some result... process it and return it
  if(isset($out[1])) {
   // Process CDATA (if present)
   if ($this->CDATA == 'content') { // Get CDATA content (without CDATA tag)
    $out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>''));
   } elseif ($this->CDATA == 'strip') { // Strip CDATA
    $out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>''));
   }

   // If code page is set convert character encoding to required
   if ($this->cp != '')
    //$out[1] = $this->MyConvertEncoding($this->rsscp, $this->cp, $out[1]);
    $out[1] = iconv($this->rsscp, $this->cp.'//TRANSLIT', $out[1]);
   // Return result
   return trim($out[1]);
  } else {
  // if there is NO result, return empty string
   return '';
  }
 }

 // -------------------------------------------------------------------
 // Replace HTML entities &something; by real characters
 // HTML 소스정리
 // -------------------------------------------------------------------
 function unhtmlentities ($string) {
  // Get HTML entities table
  $trans_tbl = get_html_translation_table (HTML_ENTITIES, ENT_QUOTES);
  // Flip keys<==>values
  $trans_tbl = array_flip ($trans_tbl);
  // Add support for ' entity (missing in HTML_ENTITIES)
  $trans_tbl += array(''' => "'");
  // Replace entities by values
  return strtr ($string, $trans_tbl);
 }

 // -------------------------------------------------------------------
 // Parse() is private method used by Get() to load and parse RSS file.
 // Don't use Parse() in your scripts - use Get($rss_file) instead.
 // 파서(Get에서호출됨)
 // -------------------------------------------------------------------
 function Parse ($rss_url) {
  // Open and load RSS file
  if ($f = @fopen($rss_url, 'r')) {
   $rss_content = '';
   while (!feof($f)) {
    $rss_content .= fgets($f, 4096);
   }
   fclose($f);

   // Parse document encoding
   $result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content);
   // if document codepage is specified, use it
   if ($result['encoding'] != '')
    { $this->rsscp = $result['encoding']; } // This is used in my_preg_match()
   // otherwise use the default codepage
   else
    { $this->rsscp = $this->default_cp; } // This is used in my_preg_match()

   // Parse CHANNEL info
   preg_match("'<channel.*?>(.*?)</channel>'si", $rss_content, $out_channel);
   foreach($this->channeltags as $channeltag)
   {
    $temp = $this->my_preg_match("'<$channeltag.*?>(.*?)</$channeltag>'si", $out_channel[1]);
    if ($temp != '') $result[$channeltag] = $temp; // Set only if not empty
   }
   // If date_format is specified and lastBuildDate is valid
   if ($this->date_format != '' && ($timestamp = strtotime($result['lastBuildDate'])) !==-1) {
      // convert lastBuildDate to specified date format
      $result['lastBuildDate'] = date($this->date_format, $timestamp);
   }

   // Parse TEXTINPUT info
   preg_match("'<textinput(|[^>]*[^/])>(.*?)</textinput>'si", $rss_content, $out_textinfo);
    // This a little strange regexp means:
    // Look for tag <textinput> with or without any attributes, but skip truncated version <textinput /> (it's not beggining tag)
   if (isset($out_textinfo[2])) {
    foreach($this->textinputtags as $textinputtag) {
     $temp = $this->my_preg_match("'<$textinputtag.*?>(.*?)</$textinputtag>'si", $out_textinfo[2]);
     if ($temp != '') $result['textinput_'.$textinputtag] = $temp; // Set only if not empty
    }
   }
   // Parse IMAGE info
   preg_match("'<image.*?>(.*?)</image>'si", $rss_content, $out_imageinfo);
   if (isset($out_imageinfo[1])) {
    foreach($this->imagetags as $imagetag) {
     $temp = $this->my_preg_match("'<$imagetag.*?>(.*?)</$imagetag>'si", $out_imageinfo[1]);
     if ($temp != '') $result['image_'.$imagetag] = $temp; // Set only if not empty
    }
   }
   // Parse ITEMS
   preg_match_all("'<item(| .*?)>(.*?)</item>'si", $rss_content, $items);
   $rss_items = $items[2];
   $i = 0;
   $result['items'] = array(); // create array even if there are no items
   foreach($rss_items as $rss_item) {
    // If number of items is lower then limit: Parse one item
    if ($i < $this->items_limit || $this->items_limit == 0) {
     foreach($this->itemtags as $itemtag) {
      $temp = $this->my_preg_match("'<$itemtag.*?>(.*?)</$itemtag>'si", $rss_item);
      if ($temp != '') $result['items'][$i][$itemtag] = $temp; // Set only if not empty
     }
     // Strip HTML tags and other bullshit from DESCRIPTION
     if ($this->stripHTML && $result['items'][$i]['description'])
      $result['items'][$i]['description'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['description'])));
      //Strip HTML tags and other bullshit from TITLE
     if ($this->stripHTML && $result['items'][$i]['title'])
      $result['items'][$i]['title'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['title'])));
     // If date_format is specified and pubDate is valid
     if ($this->date_format != '' && ($timestamp = strtotime($result['items'][$i]['pubDate'])) !==-1) {
      // convert pubDate to specified date format
      $result['items'][$i]['pubDate'] = date($this->date_format, $timestamp);
     }
     // Item counter
     $i++;
    }
   }

   $result['items_count'] = $i;
   return $result;
  }
  else // Error in opening return False
  {
   return False;
  }
 }
}

?> 

​--------------------------------------------------------------------------

 

 

 

 

이 질문에 댓글 쓰기 :

답변 3

devdev님 도움 감사드립니다

 $result['items'][$i]['title'] = str_replace("<b>","", $result['items'][$i]['title']);

그런데 제가 구문을 잘 몰라서...알려주신 구문을 rss_reader_lib파일중

임의의 자리에 넣으니 에러가 뜹니다

혹시, 어느 위치에 넣으면 되는지 알려주시면 감사드리겠습니다. 

if ($this->stripHTML && $result['items'][$i]['title']){
      $result['items'][$i]['title'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['title'])));

      $result['items'][$i]['title']=str_replace("<b>","", $result['items'][$i]['title']);

 

이렇게 해보세요..

 

답변을 작성하시기 전에 로그인 해주세요.
전체 129,672 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT