掲示板目次 > サポート > 個々の機能(Any) 新規投稿 返信投稿
 RSS_Aggregatorで文字列排除
 
keithr
 2009年12月16日 13:38 JST (参照数 3400回)  
掲示板 Full Member
Full Member

状態: オフライン


登録日: 2008年4月 7日
投稿数: 328
mystral-kkさん作のRSS_Aggregator重宝させていただいてます。
「タイトルにxxxxの文字列が入っていたらRSS表示しない」ということは可能でしょうか?

最近、ambleなどの無料ブログのRSSに広告が入り始めており、自サイトで他人の広告が表示されることにちょっと抵抗感を覚えています。たいてい「PR:」からタイトルが始まっているのでこれを対象外に表示出来たらと思い質問させていただきます。

=追記=
これが出来れば逆に「この単語を含むfeedのみを表示」が出来ますね。複数のRSS feedに対して自サイトに関係のあるもののみを表示させることが出来ます。

無茶な要望ならすいません・・・。

 
プロフィール メール
引用して書き込む
mystral-kk
 2009年12月16日 22:05 JST  
掲示板 管理者
管理者

状態: オフライン


登録日: 2006年3月23日
投稿数: 971

RSSAggregator-1.2.7を使っているという前提で書きます。phpblock_rssaggregator.phpの532行目付近に



PHP Formatted Code

        if (count($articles) != 0) {
 


という行があるので、その直後に次のコードを追加します。



PHP Formatted Code

                // Filters out some contents
                $temp = $articles;
                $articles = array();
               
                foreach ($temp as $item) {
                        if (strpos($item['title'], 'PR:') === FALSE) {
                                $articles[] = $item;
                        }
                }
               
 


PR: の部分は適宜変更してください。全角で指定するなら、utf-8(BOMなし)で保存することを忘れずに。これでタイトルに PR: という文字列を含まないものだけが表示されるようになります。もし PR: という文字列を含むものだけを表示するなら、




if (strpos($item['title'], 'PR:') === FALSE) {





if (strpos($item['title'], 'PR:') !== FALSE) {


に変えるだけです。


-- mystral-kk, "Every cloud has a silver lining."
 
プロフィール メール ホームページ
引用して書き込む
keithr
 2009年12月16日 23:36 JST  
掲示板 Full Member
Full Member

状態: オフライン


登録日: 2008年4月 7日
投稿数: 328
mystral-kkさん、いつもお世話様です。

ありがとうございました。やってみます。

 
プロフィール メール
引用して書き込む
keithr
 2009年12月17日 00:14 JST  
掲示板 Full Member
Full Member

状態: オフライン


登録日: 2008年4月 7日
投稿数: 328
ありがとうございました。見事に解決しました。

欲張りかもしれませんが、削除or追加文字列を複数指定することは可能でしょうか?

PHP Formatted Code
                       if (strpos($item['title'], 'PR:') === FALSE) {

                        if (strpos($item['title'], 'PR:', '広告') === FALSE) {

にしてみたところ、エラーは出ませんが該当の記事見出しは表示されたままでした。

 
プロフィール メール
引用して書き込む
mystral-kk
 2009年12月17日 07:43 JST  
掲示板 管理者
管理者

状態: オフライン


登録日: 2006年3月23日
投稿数: 971

例1: PR: と 広告 のどちらかを含むものを排除する。



PHP Formatted Code

 if ((strpos($item['title'], 'PR:') === FALSE) AND (strpos($item['title'], '広告') === FALSE)) {
 


例2: PR: と 広告 と AD: のいずれかを含むものを排除する。



PHP Formatted Code

 if ((strpos($item['title'], 'PR:') === FALSE) AND (strpos($item['title'], '広告') === FALSE) AND (strpos($item['title'], 'AD:') === FALSE)) {
 


例3: keithr と kobab のどちらかを含むものを追加(表示)する。



PHP Formatted Code

 if ((strpos($item['title'], 'keithr') !== FALSE) OR (strpos($item['title'], 'kobab') !== FALSE)) {
 



例4: keithr と kobab をともに含むものを追加(表示)する。



PHP Formatted Code

 if ((strpos($item['title'], 'keithr') !== FALSE) AND (strpos($item['title'], 'kobab') !== FALSE)) {
 


正規表現を使えばもっとスマートに書けますが、苦手な場合は、以上のような要領で条件判断をAND/ORでつなぐしかありません。条件の数が多くなると、別に関数を書いた方がメンテナンスしやすいでしょう。


-- mystral-kk, "Every cloud has a silver lining."
 
プロフィール メール ホームページ
引用して書き込む
内容生成: 0.35 秒
新規投稿 返信投稿


通常 通常
注目トピック 注目トピック
ロック済 ロック済
新着 新着
注目トピック 新着 注目トピック 新着
ロック済トピック 新着 ロック済トピック 新着
ゲストユーザの投稿を見る 
ゲストユーザ投稿可能 
すべてのHTMLを許可 
バッドワードをチェック