2

[[Test#?]]の場合、 MediaWiki API の一部から「 Test#.3F」を取得します。このエンコーディングとは何ですか?また、 PerlCPANaction=parseを使用して人間が読める形式に変換するにはどうすればよいですか?

URI::Encodeはパーセント デコードでは機能しますが、セクション名 1 では機能しません。

4

1 に答える 1

4

これはUTF-8パーセントエンコードですが、.の代わりに%、スペースはアンダースコアに置き換えられています。さらに、複数の連続する空白は折りたたまれ、:保持されます(にエンコードされません.3A)。

それを処理する正確なコードはParser::guessSectionNameFromWikiText()ですが、多くのコードを掘り下げたくない場合は、anchorencodeで古いMediaWikiバージョン(いくつかのエッジケースを除いて互換性があります)のはるかに単純な実装を確認してください()

str_replace( '%', '.', str_replace('+', '_', urlencode( $text ) ) );
于 2013-02-28T21:57:22.353 に答える