特定の文字で表組みがうまく行われない†
- ページ: BugTrack
- 投稿者: kaw
- 優先順位: 普通
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2023-03-26 (日) 10:46:12
- バージョン: 1.5.4_utf8
メッセージ†
表組みで、セルの要素に特定の文字(例えば「装」や「入」など)が含まれていると、その行が表としてレンダリングされず、そのまま出力されます。
この現象を確認した環境は以下のとおりです:
- OS: OpenBSD 7.2
- HTTP Server: OpenBSD httpd
- PHP: 7.4.33, 8.0.28, 8.1.14
- ページ編集に使用したウェブブラウザ: Mozilla Firefox 109.0.1, Chromium 105.0.5195.105, Android Chrome 111.0.5563.115, Microsoft Edge 111.0.1661.51
実例としては、 fuguita.org/?EBUG%E5%8B%89%E5%BC%B7%E4%BC%9A/20200530_%E6%B2%B3%E8%B1%9A%E6%9D%BF%E3%81%AE%E6%AD%B4%E5%8F%B2%28202208%E6%94%B9%29 のようになります。
- 何らかの設定変更をしていませんか?参考URLのソースからURLを除いてpukiwikiお試しサイトでプレビュー確認をしてみましたが、変化はみられませんでした。 -- 名無し
- PukiWiki-1.5.4_utf8を新規インストールしてpukiwiki.ini.phpなどの設定ファイルに手を加えない状態でも発生します。何らかの設定変更とは、どのようなものが考えられるでしょうか? -- kaw
- 確認ありがとうございます。新規インストールでも発生するということだとPHP側かもしれません。行数を減らしたり、タブ空白を除いても再現しますか? -- 名無し
- はい、再現します。 -- kaw
- 当方の環境で調査しましたら、pgreg_match関数が特定の文字を含む文字列に対して、正しいマッチ文字列を返してこないことがわかりました。 -- kaw
- 以下の箇所にパターン修飾子uを付けることで解決しました。
diff -u lib/convert_html.php.orig lib/convert_html.php
--- lib/convert_html.php.orig Tue Jan 11 08:44:45 2022
+++ lib/convert_html.php Fri Mar 31 10:13:44 2023
@@ -120,7 +120,7 @@
// '|'-separated table
function & Factory_Table(& $root, $text)
{
- if (! preg_match('/^\|(.+)\|([hHfFcC]?)$/', $text, $out)) {
+ if (! preg_match('/^\|(.+)\|([hHfFcC]?)$/u', $text, $out)) {
return Factory_Inline($text);
} else {
return new Table($out);
-- kaw
- 情報ありがとうございます。次のバージョンで修正したいと思います -- umorigu