新規作成 | 管理 | 差分 | 検索 | FrontPage | ページ一覧 | 更新履歴 | RSS

テーブル整形の不具合について - ダブルクォーテーションが使えなかった件

管理

ダブルクォーテーションが使えなかった件

今ごろ発覚しましたが、early sanitize の副作用で、テーブル整形のダブルクォートが使えていませんでした。すんまそん。--SHIMADA 2003-07-29 (Tue) 15:14:42

wiki.cgi line 834-852

           # XXXXX
-          my $tmp = "$1,";
+          my $tmp = unescape("$1,");            # SHIMADA mod [early sanitize]
           my @value = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
           my @align = map {(s/^\s+//) ? ((s/\s+$//) ? ' align="center"' : ' align="right"') : ''} @value;
           my @colspan = map {($_ eq '==') ? 0 : 1} @value;
           for (my $i = 0; $i < @value; $i++) {
               if ($colspan[$i]) {
                   while ($i + $colspan[$i] < @value and $value[$i + $colspan[$i]] eq '==') {
                       $colspan[$i]++;
                   }
                   $colspan[$i] = ($colspan[$i] > 1) ? sprintf(' colspan="%d"', $colspan[$i]) : '';
-                  $value[$i] = sprintf('<td%s%s>%s</td>', $align[$i], $colspan[$i], &inline($value[$i]));
+                  $value[$i] = sprintf('<td%s%s>%s</td>', $align[$i], $colspan[$i], &inline(escape($value[$i])));           # SHIMADA mod [early sanitize]
               } else {
                   $value[$i] = '';
               }
           }
           push(@result, join('', '<tr>', @value, '</tr>'));
           # XXXXX
           #######

反映させました。- rica 2003-07-29 (Tue) 16:58:23

完治してませんでした

管理

S式でPuzzleWikiで発覚。 今度はテーブルの中でタグを使うことができなくなった。(´・ω・`)

wiki.cgi line 834-852

           # XXXXX
-          my $tmp = unescape("$1,");            # SHIMADA mod [early sanitize]
+          my $tmp = "$1,";
+          $tmp =~ s/&quot;/"/g;                                       # SHIMADA add [early sanitize]
           my @value = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
           my @align = map {(s/^\s+//) ? ((s/\s+$//) ? ' align="center"' : ' align="right"') : ''} @value;
           my @colspan = map {($_ eq '==') ? 0 : 1} @value;
           for (my $i = 0; $i < @value; $i++) {
               if ($colspan[$i]) {
                   while ($i + $colspan[$i] < @value and $value[$i + $colspan[$i]] eq '==') {
                       $colspan[$i]++;
                   }
                   $colspan[$i] = ($colspan[$i] > 1) ? sprintf(' colspan="%d"', $colspan[$i]) : '';
-                  $value[$i] = sprintf('<td%s%s>%s</td>', $align[$i], $colspan[$i], &inline(escape($value[$i])));           # SHIMADA mod [early sanitize]
+                  $value[$i] =~ s/"/&quot;/g;                         # SHIMADA add [early sanitize]
+                  $value[$i] = sprintf('<td%s%s>%s</td>', $align[$i], $colspan[$i], &inline($value[$i]));
               } else {
                   $value[$i] = '';
               }
           }
           push(@result, join('', '<tr>', @value, '</tr>'));
           # XXXXX
           #######

何度も済みません。(ぺこぺこ)--SHIMADA 2003-07-30 (Wed) 09:33:45

薄々感づいてましたけどね、全くしょうがないわね、今回だけですからね。
…すみません、叱って欲しそうだったので…。(´・ω・`) < この子が。 - rica 2003-07-30 (Wed) 10:28:53