ページの作成や編集にはユーザ登録が必要です。
rssプラグインで生成するリンクが不正になる
- 投稿者: 510
- カテゴリ: プラグイン
- 優先度: 重要
- 状態: 完了
- 日時: 2006年10月28日 14時40分00秒
内容
環境は
- FreeStyleWiki3.6.2
- Perl5.006001
です。
livedorrブログ、アメブロ、tDiaryの3者が出力するrdf(rss)ファイルをrssプラグインで表示させている時に気が付きました。当方の調べた範囲では、
- itemタグの子要素が、titleタグ、linkタグと並ぶ場合はリンクが正常に作られる
- itemタグの子要素が、linkタグ、titleタグと並ぶ場合はURLがタイトルの文字列と同じものになり不正なリンクを生成する
のようです。要素の出現順序に影響しない修正が必要かと思われます。その場限りの修正で申し訳ありませんが、patchをつけます。
------------------------------------------------------------- *** org.RSS.pm Wed Oct 25 05:30:35 2006 --- RSS.pm Wed Oct 25 05:32:40 2006 *************** *** 93,106 **** while ($$content =~ m|<item[ >](.+?)</item|gsi) { my $item = $1; ! my $link = ""; my $title = ""; my $date = ""; $item =~ m#title>([^<]+)</#gsi; $title = $1; ! $item =~ m#link>([^<]+)</#gsi; $link = $1; $link =~ s/\s".*//g; # ダブルクォーテーション以降を切り落とす --- 93,108 ---- while ($$content =~ m|<item[ >](.+?)</item|gsi) { my $item = $1; ! my $HackLine = $1; ! my $link = ""; my $title = ""; my $date = ""; $item =~ m#title>([^<]+)</#gsi; $title = $1; ! ! $item = $HackLine; $item =~ m#link>([^<]+)</#gsi; $link = $1; $link =~ s/\s".*//g; # ダブルクォーテーション以降を切り落とす
コメント
- 「提案」のラジオボタンが消えていたので再度押しました - 510 (2006年10月28日 14時47分38秒)
- FSWiki 自信の生成する RSS も rss プラグインで表示させるとリンクがおかしくなりますね。 - meta (2006年12月20日 07時13分03秒)
- 修正コードは下記になります。 - KG (2018年06月27日 20時49分04秒)
--- plugin\rss\RSS.pm~ 2017-11-30 16:06:48.000000000 +0900 +++ plugin\rss\RSS.pm 2018-06-27 20:41:36.000000000 +0900 @@ -82,45 +82,45 @@ if($$content =~ /<rss .*?version=\"(.*?)\"/i){ $version = $1; } if($version eq "1.0"){ - $$content =~ m#(/channel>|/language>)#gsi; + $$content =~ m#(/channel>|/language>)#si; } my $count=0; while ($$content =~ m|<item[ >](.+?)</item|gsi) { my $item = $1; my $link = ""; my $title = ""; my $date = ""; - $item =~ m#title>([^<]+)</#gsi; + $item =~ m#title>([^<]+)</#si; $title = $1; - $item =~ m#link>([^<]+)</#gsi; + $item =~ m#link>([^<]+)</#si; $link = $1; $link =~ s/\s".*//g; # ダブルクォーテーション以降を切り落とす if ($version eq "2.0") { - if ($item =~ m#pubDate>([^<]+)</#gsi) { + if ($item =~ m#pubDate>([^<]+)</#si) { $date = $1; } } if ($version eq "1.0") { - #if ($item =~ m#(description|dc\:date)>([^<]+)</#gs) { - if ($item =~ m#dc\:date>([^<]+)</#gsi) { + #if ($item =~ m#(description|dc\:date)>([^<]+)</#si) { + if ($item =~ m#dc\:date>([^<]+)</#si) { $date = $1; } } if ($version eq "0.91") { - if($item =~ m#description>([^<]+)</#gsi){ + if($item =~ m#description>([^<]+)</#si){ $date = $1; } } # 文字コードの変換 &Jcode::convert(\$title,'euc',$charset);
最終更新時間:2018年06月29日 21時57分16秒