それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

PEAR_Pagerを使ってみた。

自前でGoooooooooooogleするクラスを作って使っている。忙しくてメンテナンスが面倒になってきたので、Pagerクラスを導入した。ところが、mod_rewriteをパス名に含めるSEOやってると、これが化ける。

http://bookmacro.com/プロフェッショナル〜仕事の流儀/user_review/?page=1

のような、URLを作っていると、PAGERでリンクが化ける。


IE7でURLエンコードを表示しない設定にしているとき*1ちゃんと日本語で表示される。便利だ。SEO的にも効果が高いみたいだ。*2



これ、Pagerクラスでやると、文字コード処理してくれるんだ。ただし、URLのパス部分が正しくエンコードされてくれない。というか、2重にエンコードされてフランス語に化けてしまう。ああああああめんどくせー。何もパスまでエンコード処理しなくて良いんだが。。。。


というわけで、Pager/Common.php修正してみた・・・・htmlentitiesをコメントアウト

  return sprintf('<a href="%s"%s%s%s title="%s">%s</a>',
@757 - //htmlentities($this->_url . $href),
@758 + $this->_url . $href,
     empty($this->_classString) ? '' : ' '.$this->_classString,
     empty($this->_attributes)  ? '' : ' '.$this->_attributes,
     empty($this->_accesskey)   ? '' : ' accesskey="'.$this->_linkData[$this->_urlVar].'"',
     $altText,
     $linkText
);


これで動いた。こういうのPEARに報告したいんだけど。どうすればいいのかなぁ。。。。
日本語環境だけなのか。UTF-8をURLに含める場合全般なのか。その辺がよく分からない。なおかつPEARに報告する方法が分からない。以前申請したアカウントは貰えなかった。。。


でも、PEARソースの直接編集は嫌すぎる。またWrapperをまた書くのか・・・面倒だ。CVSにコミットしたいなぁ。。。

*1:FF、OperaならデフォルトでURLにUTF-8文字を埋めても大丈夫。

*2:Amazon.co.jpやはてな、Wikipediaが急激にランクアップした理由がこの辺にありそうだと思っている。。