SOが質問へのリンクに使用するようなURL文字列を作成しようとしています。URLの書き換え(mod_rewrite)は考えていません。ページにリンクを生成することを検討しています。
例: 質問名は次のとおりです。
Is it better to use ob_get_contents() or $text .= ‘test’;
URL は次のようになります。
http://stackoverflow.com/questions/292068/is-it-better-to-use-obgetcontents-or-text-test
私が興味を持っている部分は次のとおりです。
is-it-better-to-use-obgetcontents-or-text-test
したがって、基本的には、URL を読み取り可能な状態に保ちながら、英数字以外のものをすべて削除しようとしています。以下を作成しましたが、それが最善の方法なのか、それともすべての可能性をカバーしているかはわかりません。
$str = urlencode(
strtolower(
str_replace('--', '-',
preg_replace(array('/[^a-z0-9 ]/i', '/[^a-z0-9]/i'), array('', '-'),
trim($urlPart)))));
だから基本的に:
- トリム
- 英数字以外とスペースを何も置き換えない
- 次に、英数字以外のすべてをダッシュに置き換えます
- と置換する -。
strtolower()
urlencode()
-- おそらく必要ありませんが、適切な測定のために。