*&が&に変換されないまま出力される場合がある [#v729b7bf]

-ページ: BugTrack
-投稿者: [[reimy]]
-優先順位: 緊急
-状態: 完了
-カテゴリー: 本体バグ
-投稿日: 2003-06-12 (木) 08:33:50
-バージョン: 

**メッセージ [#nc949576]
&→&への変換が正しく行なわれない場合がある。
-&に半角英数文字が続き;で終わる文字列がインラインプラグインやユーザー定義に合致しない場合、&が&に変換されないまま出力される。
 &hoge;
&hoge;
~変換されないのは &半角英数文字; の場合だけで、&半角英数文字 だけで ;が付かない場合は正しく出力される。
 &hoge
&hoge

----
-実体参照が定義されているかどうかを調べる手段が…[[PHP:get_html_translation_table]](HTML_ENTITIES)には†などは含まれていないみたいですし。うーん。 -- [[ぱんだ]] &new{2003-06-12 (木) 09:41:39};
-ユーザ定義ルールを以下のように修正すれば、とりあえず「実体名による」実体参照を「全て」抑止できますが、それはお望みの動作ではないと思われ… -- [[ぱんだ]] &new{2003-06-12 (木) 09:41:39};
 -'&(#[0-9]+|#x[0-9a-f]+|[0-9a-zA-Z]+);' => '&$1;',
 +'&(#[0-9]+|#x[0-9a-f]+);' => '&$1;',
-[[W3C・Character entity references in HTML 4:http://www.w3.org/TR/html4/sgml/entities.html]] -- [[reimy]] &new{2003-06-12 (木) 13:55:18};
-get_autolink_pattern_sub()を使って、正規表現パターンを作ってみました。まだ最適化の余地はありそう(?)ですが、ちょっと泣けてきますね。(80桁で改行しています) -- [[ぱんだ]] &new{2003-06-12 (木) 15:39:08};
 (?:A(?:Elig|acute|circ|grave|lpha|ring|tilde|uml)|Beta|C(?:cedil|hi)|D(?:agger|e
 lta)|E(?:TH|acute|circ|grave|psilon|ta|uml)|Gamma|I(?:acute|circ|grave|ota|uml)|
 Kappa|Lambda|Mu|N(?:tilde|u)|O(?:Elig|acute|circ|grave|m(?:ega|icron)|slash|tild
 e|uml)|P(?:hi|i|rime|si)|Rho|S(?:caron|igma)|T(?:HORN|au|heta)|U(?:acute|circ|gr
 ave|psilon|uml)|Xi|Y(?:acute|uml)|Zeta|a(?:acute|c(?:irc|ute)|elig|grave|l(?:efs
 ym|pha)|mp|n(?:d|g)|pos|ring|symp|tilde|uml)|b(?:dquo|eta|rvbar|ull)|c(?:ap|cedi
 l|e(?:dil|nt)|hi|irc|lubs|o(?:ng|py)|rarr|u(?:p|rren))|d(?:Arr|a(?:gger|rr)|e(?:
 g|lta)|i(?:ams|vide))|e(?:acute|circ|grave|m(?:pty|sp)|nsp|psilon|quiv|t(?:a|h)|
 u(?:ml|ro)|xist)|f(?:nof|orall|ra(?:c(?:1(?:2|4)|34)|sl))|g(?:amma|e|t)|h(?:Arr|
 arr|e(?:arts|llip))|i(?:acute|circ|excl|grave|mage|n(?:fin|t)|ota|quest|sin|uml)
 |kappa|l(?:Arr|a(?:mbda|ng|quo|rr)|ceil|dquo|e|floor|o(?:wast|z)|rm|s(?:aquo|quo
 )|t)|m(?:acr|dash|i(?:cro|ddot|nus)|u)|n(?:abla|bsp|dash|e|i|ot(?:in)?|sub|tilde
 |u)|o(?:acute|circ|elig|grave|line|m(?:ega|icron)|plus|r(?:d(?:f|m))?|slash|ti(?
 :lde|mes)|uml)|p(?:ar(?:a|t)|er(?:mil|p)|hi|i(?:v)?|lusmn|ound|r(?:ime|o(?:d|p))
 |si)|quot|r(?:Arr|a(?:dic|ng|quo|rr)|ceil|dquo|e(?:al|g)|floor|ho|lm|s(?:aquo|qu
 o))|s(?:bquo|caron|dot|ect|hy|i(?:gma(?:f)?|m)|pades|u(?:b(?:e)?|m|p(?:1|2|3|e)?
 )|zlig)|t(?:au|h(?:e(?:re4|ta(?:sym)?)|insp|orn)|i(?:lde|mes)|rade)|u(?:Arr|a(?:
 cute|rr)|circ|grave|ml|psi(?:h|lon)|uml)|weierp|xi|y(?:acute|en|uml)|z(?:eta|w(?
 :j|nj)))
-[[PHP:get_html_translation_table]]で対象となっているものだけでいいかも。それ以外はユーザー定義で個別対応とか。 -- [[reimy]] &new{2003-06-12 (木) 17:52:58};
--それだと半分くらいになります。どっちにしても、このパターンをCACHE_DIRあたりに置くようにして生成の手間を省かないと… -- [[ぱんだ]] &new{2003-06-12 (木) 23:24:23};
 (?:A(?:Elig|acute|circ|grave|ring|tilde|uml)|Ccedil|E(?:TH|acute|circ|grave|uml)
 |I(?:acute|circ|grave|uml)|Ntilde|O(?:acute|circ|grave|slash|tilde|uml)|THORN|U(
 ?:acute|circ|grave|uml)|Yacute|a(?:acute|c(?:irc|ute)|elig|grave|mp|ring|tilde|u
 ml)|brvbar|c(?:cedil|e(?:dil|nt)|opy|urren)|d(?:eg|ivide)|e(?:acute|circ|grave|t
 h|uml)|frac(?:1(?:2|4)|34)|gt|i(?:acute|circ|excl|grave|quest|uml)|l(?:aquo|t)|m
 (?:acr|i(?:cro|ddot))|n(?:bsp|ot|tilde)|o(?:acute|circ|grave|rd(?:f|m)|slash|til
 de|uml)|p(?:ara|lusmn|ound)|quot|r(?:aquo|eg)|s(?:ect|hy|up(?:1|2|3)|zlig)|t(?:h
 orn|imes)|u(?:acute|circ|grave|ml|uml)|y(?:acute|en|uml))
-cvsに投入しました。 -- [[ぱんだ]] &new{2003-06-13 (金) 10:32:42};
--[[cvs:cache/entities.dat]](v1.4:r1.1) &color(red){''新規''};
--[[cvs:default.ini.php]](v1.4:r1.3)
--[[cvs:init.php]](v1.4:%%r1.49%%r1.50)
--[[cvs:jphone.ini.php]](v1.4:r1.5)
--[[cvs:pukiwiki.ini.php]](v1.4:r1.39)
--[[cvs:i_mode.ini.php]](v1.4:r1.4)
-うまくいってるようです。 -- [[reimy]] &new{2003-06-13 (金) 11:48:11};
--と思ったら、ユーザー定義で次のような定義があるとうまくいかないようです。 -- [[reimy]] &new{2003-06-13 (金) 11:57:33};
 "&" => "&", //全角&を半角表示に
~この場合、©と入力したものも©になってしまいます。ユーザー定義のあとでチェックが入るんですねぇ。うーん…困ったなあ。
-置換パターンの順序を調整しました。[[cvs:init.php]](v1.4:r1.51)を試してみてください。 -- [[ぱんだ]] &new{2003-06-13 (金) 12:39:10};
--うまくいきましたm(__)m -- [[reimy]] &new{2003-06-13 (金) 14:54:33};

#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.224 sec.

OSDN