Hatena::ブログ(Diary)

ゆどうふろぐ RSSフィード

2010-05-06

[][][] HTML_CSS_Mobileを大幅バージョンアップしました!

バージョン番号だけね。

いや、なんていうか、0.1.7と書こうとして1.7.0って書いてビルドしちゃったんですよ。。。

で、戻らなくなったと。。。

というわけで開き直ってstable 1.8にしました。(∀`*ゞ)エヘヘ

最新版は、openpearにあります。

http://openpear.org/package/HTML_CSS_Mobile

変更内容は

  • 文中のCDATAが消えてしまう問題を修正 (thanks for id:MugeSo)
  • CSSが一切指定されていない場合のバグを修正 (thanks for id:MugeSo)
  • validなbrタグの閉じタグが消えてしまう問題を修正
  • libxmlのerror / warning等が予期せずに出力されてしまう問題を修正
  • getXmlErrors()メソッドを追加。libxmlのエラーをこのメソッド経由で取得できるように修正。

といった感じです。

何かおかしなところとかあったら、またぜひ報告ください><

RewishRewish 2010/05/07 09:44 初めまして、rewと申します。

不具合報告と言うか要望に近いのですが、Windows環境でHTML_CSS_Mobileを利用すると、CSSファイルのパスがおかしくなり、正しく読み込まれません。

パスの形式が異なるのが原因だと思いますので、HTML/CSS/Mobile.php 350行目のif文に、
substr($file, 1, 2) !== ':\\'
のようなD:\path\to\cssに対応する条件を追加して頂けるとありがたいです。

# HTML_CSS_Mobile大変便利なので重宝しております。ありがとうございます。

YudoufuYudoufu 2010/05/07 13:28 >Rewish さん
はじめましてー。何度かはてブでお見かけしていますw

> substr($file, 1, 2) !== ':\\'
ありがとうございます!早速対応しました。

現在、version1.8.1でロジックを追加したものをリリースしました。

RewishRewish 2010/05/07 18:31 ご対応いただきありがとうございます!
また何かあればご報告させていただきます :)

yoshi-kenyoshi-ken 2010/05/26 19:54 画面に上手く表示されないので、エスケープして再度投稿致します。

<br>というタグが「HTMLCSSBRESCAPE%br /&gt」となってしまう不具合を見つけました。
解決法を現在探しているところですが、取り急ぎ報告をさせて頂きます。
修正をお願い出来ますと幸いです。

【HTMLのタグ】
<span>文字列</span><br />文字列<br />
<br />test<br />
<br>test</br><br /><br /><br />

【HTML_CSS_Mobile-1.8.0での変換後】
<span>文字列</span>HTMLCSSBRESCAPE%br /&gt;文字列<br htmlcssbrescape>test<br htmlcssbrescape>test<br><br><br>

【画面に表示されるコード】
文字列HTMLCSSBRESCAPE%br />文字列
test
test

よろしくお願い致します。

takonixitakonixi 2010/10/01 17:56 お世話になっております。
今現在HTMLL_CSS_Mobileを使わせていただいております。

↑の方の現象ですが
同一行にbrが複数あると発生します。
例)TEST<br /><br />

正規表現を少し修正することで回避できましたので参考までに

stable 1.8になりますが

154行目付近の
$document = preg_replace('/<(br\s*.*\/)>/', 'HTMLCSSBRESCAPE%$1%::::::::', $document);

$document = preg_replace('/<(br[^>]*)>/', 'HTMLCSSBRESCAPE%$1%::::::::', $document);


293行目付近の
$result = preg_replace('/HTMLCSSBRESCAPE%(br\s*.*\/)%::::::::/', '<$1>', $result);

$result = preg_replace('/HTMLCSSBRESCAPE%(br[^(?:%::::::::)]*)%::::::::/', '<$1>', $result);


TODOに書かれている「本質的な解決になっていない」
は変わらないとは思いますが上記の現象に関しては対応できましたので
既に解決しているかもしれませんがご報告まで。

chirumosdoor@gmail.comchirumosdoor@gmail.com 2010/10/08 01:17 どうやら、
<br class="clear" />
展開後↓
<br style="clear:both" class="clear" />

の場合には、HTMLCSSBRESCAPEが画面に表示され、変換に失敗するようです。

とりあえず :→@にして、
154行目:
$document = preg_replace('/<(br[^>]*)>/', 'HTMLCSSBRESCAPE%$1%@@@@@@@@', $document);
293行目:
$result = preg_replace('/HTMLCSSBRESCAPE%(br[^(?@%@@@@@@@@)]*)%@@@@@@@@/', '<$1>', $result);
にすればいけました。
※他の問題あるのかもしれませんが。。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/Yudoufu/20100506/1273160740