WP-Al-SWFObject プラグイン

一つ前の記事で SWFObject を使いたかったので、こちらのプラグインを入れた。

でも、Open Flash Chart2 を使おうとしたら問題が起きた。

[embedSWF]/blog/wp-content/uploads/2010/02/ofc/open-flash-chart.swf,550,200,,9.0.0,,{“data-file”:”/blog/wp-content/uploads/2010/02/ofc/line-dot.json”}[/embedSWF]※最初の e は本来小文字

のように指定をして、SWFObject を呼び出すのだが、上記の指定が、

<div style="text-align: center; width: 550px; height: 200px; line-height: 200px; background: #ffffff;">
<div id="swfc0ec1">This movie requires Flash Player 9.0.0</div>
</div>
<script type="text/javascript">
	swfobject.embedSWF("/blog/wp-content/uploads/2010/02/ofc/open-flash-chart.swf", "swfc0ec1", "550", "200", "9.0.0", "http://rd.uniba.jp/blog/wp-content/plugins/wp-al-swfobject/expressInstall.swf", {&#8220;data-file":"/blog/wp-content/uploads/2010/02/ofc/line-dot.json"}, {}, {});
</script>

と展開されてしまい、3行目の &#8220; のところでパースエラーとなってしまう。


そのため、プラグインの編集を行なう。
wp-al-swfobject/wp-al-swfobject.php の 216 行目のところが問題。

function wp_al_swfobject_merge_object($obj_ary) {
	$joined = array();
	$n = count($obj_ary);

	if ($n == 0) return "";
	if ($n == 1) return $obj_ary[0];

	for ($i = 0; $i < $n; ++$i) {

		$o = $obj_ary[$i];
		$o = preg_replace("/’|′|”|″/", "\"", $o);

		//適当
		preg_match("/\s*(.*)\s*/", stripslashes($o), $match);
		$pairs = preg_split("/\s*,\s*/", $match[1]);

		foreach($pairs as $v) {
		if (strcmp($v, "") == 0) continue;

			$pair = preg_split("/\s*:\s*/", $v);
			$joined[$pair[0]] = $pair[1];
		}
	}

	while(list($key, $value) = each($joined)) {
		$result .= $key.":".$value.",";
	}
	$result = substr($result, 0, strlen($result) - 1);

	return $result;
}

以下のように変更してやってクイックハック

		$o = preg_replace("/’|′|“|”|″/", "\"", $o);

とりあえず、これで Open Flash Chart は動くようになったので良しとする。

preload preload preload