BBCodeの`url`タグは、テキストがホストの後にコンポーネントを持つURLで終わる場合に壊れます

優先度/重大度:

プラットフォーム

OS ブラウザ
Windows 11 Google Chrome 112.0.5615.138
Ubuntu 22.04 Google Chrome 112.0.5615.49
macOS Ventura Google Chrome 112.0.5615.137

(すべてデスクトップ)

説明:

以下の条件下で、投稿内のBBCode url タグが正しくレンダリングされません。

  • タグで囲まれたテキストがURLで終わる
  • そのURLがホストコンポーネントの後にコンポーネントを持つ(つまり、パスクエリ、および/またはフラグメント

再現手順:

以下のマークアップを含む投稿を作成します。

[url]http://example.com/[/url]

:bug: マークアップが期待どおりにレンダリングされません。

image

期待される動作:

マークアップは次のようにレンダリングされるべきです。

image

追加コンテキスト

try.discourse.org の “セーフモード” でこの問題を再現できました。


パスで終わるURLのテキストの誤処理の追加例:

マークアップ:

[url]http://example.com/foo[/url]
[url]http://example.com/foo/[/url]
[url=http://example.com/]http://example.com/[/url]
[url=http://example.com/]foo http://example.com/[/url]

レンダリング:


Old url markup not migrated to new forum - Website and Forum - Arduino Forum で最初に報告されました。

このマークアップが正しくレンダリングされていた時期(SMF フレームワークから Discourse への移行前)に作成された投稿が多数あります。

「いいね!」 3

これはコアバグとして確認されており、今後数週間で修正する予定です。

具体的には、

[url]http://example.com[/url] は機能しますが、[url]http://example.com/example[/url] は末尾にスペースを追加しない限り機能しません [url]http://example.com/example [/url]

デバッグを開始したところ、エスケープルールが原因でパーサーがトリップしているようです。修正いたしますので、ご報告ありがとうございました。

「いいね!」 5

このコードにはあまり詳しくありませんが、ざっと見てみました。自動リンクシステムに関係していると思います。パーサーが終了URLタグ [/url] を探す頃には、それはすでに自動リンクに組み込まれています。

例:ここの自動リンクが http://example.com/foo%5B/url%5D になっていることに注意してください。

http://example.com/foo

だから、スペースを追加すると役立つのは、自動リンクに [/url] が含まれるのを防ぐためです。

:thinking:

「いいね!」 6

以下のように修正しました。

レビュー/マージをどうぞ。これは非常に複雑な修正です @per1234 なぜなら、以下のようなクレイジーなものもサポートしているからです。

[url][b]www.site.com[/b][/url]

「いいね!」 5

これで全て修正されました :confetti_ball:

[url]http://example.com/foo[/url]
[url]http://example.com/foo/[/url]
[url=http://example.com/]http://example.com/[/url]
[url=http://example.com/]foo http://example.com/[/url]

http://example.com/foo
http://example.com/foo/
http://example.com/
foo http://example.com/

@per1234
修正は既にデプロイされているはずです。問題なく動作しているか教えてください!

ご報告ありがとうございました!

「いいね!」 1

サムさん、迅速な解決をありがとうございます!

「いいね!」 3

このトピックは5日後に自動的に閉じられました。返信はもう許可されていません。