プラグインのダブルスラッシュ問題

このNibbleblogにはプラグイン機能があり、このうちFacebookOpen Graphプラグインのog:imageと、Twitter Cardプラグインのtwitter:imageのURLがhttp://www.example.com//themes/テーマ名/css/img/image.pngとダブルスラッシュ(//)が入っておかしなことになっていた。そこで、以下の2つのスクリプトを次のとおり修正した。

  • /plugins/open_graph/plugin.bit(Open Graphプラグイン)
  • /plugins/twitter_cards/plugin.bit(Twitter Cardプラグイン)

コードの修正内容

//$og['image'] = $settings['url'].HTML_THEME_IMG.'image.png';
  $og['image'] = preg_replace('/([^:]\/)\//', '$1', $settings['url'].HTML_THEME_IMG.'image.png');

いずれもmeta要素のcontent属性の値となるURLを生成するコードで、修正部分は同じ。PHPのPCRE正規表現を用いて、ダブルスラッシュを普通のスラッシュにpreg_replaceで置換しただけ。しかし正規表現というのは、なぜかいつも顔文字に見えてくる。