Changeset 36489 for lang/php/HTML_CSS_Mobile
- Timestamp:
- 01/20/10 19:19:15 (3 years ago)
- Location:
- lang/php/HTML_CSS_Mobile/branches/mugeso-accept_html_with_CDATA_section
- Files:
-
- 2 modified
- 1 copied
-
. (copied) (copied from lang/php/HTML_CSS_Mobile/trunk)
-
HTML/CSS/Mobile.php (modified) (9 diffs)
-
sample/sample.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/php/HTML_CSS_Mobile/branches/mugeso-accept_html_with_CDATA_section/HTML/CSS/Mobile.php
r32393 r36489 37 37 * ( http://search.cpan.org/~tokuhirom/HTML-DoCoMoCSS-0.01/lib/HTML/DoCoMoCSS.pm ) 38 38 * のPHP移殖版 39 * 40 * @package 39 * 40 * @package 41 41 * @version 0.1.5 42 42 * @copyright 2008 yudoufu 43 * @author Daichi Kamemoto(a.k.a yudoufu) <daikame@gmail.com> 43 * @author Daichi Kamemoto(a.k.a yudoufu) <daikame@gmail.com> 44 44 * @license MIT License 45 45 */ … … 51 51 private $dom_xpath; 52 52 private $css_files = array(); 53 private $html_css; 53 private $html_css; 54 54 55 55 /** 56 56 * getInstance インスタンスを取得 57 * 57 * 58 58 * @return class 59 59 */ … … 65 65 /** 66 66 * setBaseDir CSSのベースディレクトリ(通常はDocumentRoot)を設定 67 * 68 * @param string $base_dir 67 * 68 * @param string $base_dir 69 69 * @return class 70 70 */ … … 78 78 * setMode CSSのチェックモードを設定 79 79 * #TODO: もっとしっかりモード実装 80 * 81 * @param string $mode 80 * 81 * @param string $mode 82 82 * @return class 83 83 */ … … 90 90 /** 91 91 * addCSSFiles CSSのファイルをプログラム側から読み込む 92 * 93 * @param array $files 92 * 93 * @param array $files 94 94 * @return class 95 95 */ … … 140 140 $document = preg_replace('/&(#(?:\d+|x[0-9a-fA-F]+)|[A-Za-z0-9]+);/', 'HTMLCSSINLINERESCAPE%$1%::::::::', $document); 141 141 142 // CDATAを退避 143 $cdata_pattern = '/' . preg_quote('<![CDATA[') . '.*' . preg_quote(']]>') . '/Us'; 144 $escaped_cdata = null; 145 if($num_matched = preg_match_all($cdata_pattern, $document, $e)) { 146 $escaped_cdata = $e[0]; 147 for($i = 0; $i < $num_matched; $i++) { 148 $cdata_replacements[] = "HTMLCSSCDATAPLACEHOLDER$i::::::::"; 149 $cdata_patterns[] = $cdata_pattern; 150 } 151 $document = preg_replace($cdata_patterns, $cdata_replacements, $document, 1); 152 } 153 142 154 // 機種依存文字がエラーになる問題を回避するため、UTF-8に変換して処理 143 155 $doc_encoding = mb_detect_encoding($document, 'sjis-win, UTF-8, eucjp-win'); … … 237 249 } 238 250 251 // エスケープしていたCDATAを復元 252 if($escaped_cdata) { 253 $result = str_replace($cdata_replacements, $escaped_cdata, $result); 254 } 255 239 256 // エスケープしていた参照を復元 240 257 $result = preg_replace('/HTMLCSSINLINERESCAPE%(#(?:\d+|x[0-9a-fA-F]+)|[A-Za-z0-9]+)%::::::::/', '&$1;', $result); … … 251 268 /** 252 269 * loadCSS 各所で指定されているCSSファイルを読み込み、HTML_CSSのオブジェクト配列として格納する 253 * 270 * 254 271 * @return void 255 272 */ … … 311 328 312 329 /** 313 * _loadCSS 314 * 315 * @param string $css_string 330 * _loadCSS 331 * 332 * @param string $css_string 316 333 * @return void 317 334 */ -
lang/php/HTML_CSS_Mobile/branches/mugeso-accept_html_with_CDATA_section/sample/sample.html
r17637 r36489 23 23 <div>�ӂ��ӂ��@</div> 24 24 <a href="mailto:hoge@hogehoge?subject=hoge&body=hogehoe">�����N</a> 25 25 <![CDATA[cdata]]> 26 <![CDATA[multi 27 line 28 cdata]]> 29 <![CDATA[cdata with character refference]]> 30 <![CDATA[CDATA with > and < ]] ]]> 26 31 </body> 27 32 </html>
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)