朝顔日記

rNote の微改造とか

2005-02-04

一頃は、対応した UA には application/xhtml+xml で送出していたこの日記ですが、最近は text/html で送出していました。というのは、リンク元やトラックバック、ツッコミの内容などの URI に & が含まれていたりすると xml パースエラーでページが表示出来ない場合があったからです。rnote.php をサラッと見た限りではどこをいじればいいのかわからなかったので、text/html にしていたわけなんですが、ちょっと気合を入れてみてみることにしました。んで、改造しところのメモ。

rnote.php のバージョンは、0.9.7.5 です。オリジナルの436行目付近の autolink 関数のあたり。


function autolink($url){
  $url = preg_replace(LINK_REP_STR,"<a href=\"\\1\\2\">\\1\\2</a>",$url);
  $url = preg_replace("/&([^(amp)])/","&amp;\\1",$url);
  return $url;
}

これで、ツッコミやトラックバック回りは大丈夫ぽいですが、これだけではリンク元がうまく行きません。1201行目付近を以下のように。


  while($tagstr=SkinTagChk('Ref_Data',$a,$opt)){
    $rep='';
    if(($bRefExist)&&(isset($opt['fmt']))) $rep=WriteBack_Ref($ref_data,$opt['fmt']);
    $a=str_replace($tagstr,$rep,$a);
    $a = preg_replace("/&([^(amp)])/","&amp;\\1",$a);
  }

これで、多分大丈夫な気がするけど、自信がないのでリンク元の表示は止めました。:p)

ちなみに、application/xhtml+xml で送出する方法は rNote で application/xhtml+xml に書いたとおりです。

あと、この件とは関係ないですが、オリジナルの155行目を以下のようにしています。


    if(preg_match('/^(http|ftp|mailto|#|\/)/s',$tmp[1])){    // exclude

オリジナルだといわゆるページ内リンクができないようだったので。

どうもうまくいっていなかったので、考え直しました。

「rNote の微改造とか」へコメントをつける

書き込み時の挙動について
URI らしき文字列には自動的にリンクが張られます。また "<" や、">" は実体参照化されます。
スパム対策のため、リファラを切っていると投稿できません。

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2005/02/diary_050204a.html