誰かが私にナメクジを生成する機能を提供できますか?

Dec 30 2020

Wordpressがスラッグを生成するために使用する関数は、いくつかの関数とフィルターに散在しています。私はそれらすべてを見つけることができません。誰かが私にスラッグを生成するための単一のphp関数を提供できますか?Wordpressのすべての機能は必要ありません。ラテン文字以外の文字をエンコードし、URLで許可されていない不正な文字を削除するだけです。

この投稿は機能を提供しますが、ラテン文字以外の文字を処理することはできません。

ありがとう!

回答

1 TomJNowell Dec 30 2020 at 21:14

この投稿は機能を提供しますが、ラテン文字以外の文字を処理することはできません。

これは、URLにラテン語/ ASCII以外の文字を含めることができないためです。

ブラウザにラテン文字以外の文字が表示される場合がありますが、これは単なるユーザーインターフェイス機能です。

たとえば、このウィクショナリーURL:https://en.wiktionary.org/wiki/わかもの#Japaneseにアクセスすると、ブラウザのURLは日本語の文字をエンコードして実際のURLを取得します。https://en.wiktionary.org/wiki/%E3%82%8F%E3%81%8B%E3%82%82%E3%81%AE#Japanese次にURLは、URLを表示するときにそれをデコードします。パーセント記号の付いたバージョンが実際のURLです。

アラビア語など、他の非ASCII文字コードでも同様です。スラッグを使用して投稿を作成しわかもの、データベースを保存して確認すると、は表示されません。わかものが表示されます%e3%82%8f%e3%81%8b%e3%82%82%e3%81%ae。同様に、UIには日本語の文字が表示されますが、リンクをコピーすると、エンコードされたバージョンが取得されます。

次にデータベースを更新して投稿のスラッグをに変更すると、投稿わかものを読み込めなくなり、404が返されます。これは、スラッグが無効であり、そのスラッグに一致するURLを読み込めないためです。

はい、ラテン文字以外の文字を%xxとしてエンコードする必要があります

あなたはurlencodeそれをする必要がありますecho urlencode( $slug )