web-dev-qa-db-ja.com

URLのスペースをダッシュ​​に置き換えます

次のような特殊文字をなんとか置き換えました。 /など私のURLに今は再びスペースがあります。これが私のコードです:

<h3><a href="<?php echo (isset($row_getDisplay['post_id']) ? $row_getDisplay['post_id'] : ''); ?>_<?php echo str_replace(array(':', '\\', '/', '*'), ' ', urldecode($row_getDisplay['title'])); ?>.html" ><?php echo (isset($row_getDisplay['title']) ? $row_getDisplay['title'] : ''); ?></a></h3>

特殊文字を削除したり、スペースをダッシュ​​に置き換えたりするのが好きです。

16
Robdogga55

str_replace(' ', '-', $string);をお試しください

37
ka_lin

Preg_replaceを使用できます。

preg_replace('/[[:space:]]+/', '-', $subject);

これにより、スペースのすべてのインスタンスが単一の「-」ダッシュに置き換えられます。したがって、ダブル、トリプルなどのスペースがある場合でも、ダッシュは1つになります。

編集:これは私のURLを整理するために昨年使用したgenerec関数です

    function formatUrl($str, $sep='-')
    {
            $res = strtolower($str);
            $res = preg_replace('/[^[:alnum:]]/', ' ', $res);
            $res = preg_replace('/[[:space:]]+/', $sep, $res);
            return trim($res, $sep);
    }

英数字以外のすべての文字をスペースに変換してから、すべてのスペースをダッシュ​​に変換し、文字列の末尾/先頭にあるダッシュを削除します。これは、str_replaceに特殊文字をリストする必要があるよりもうまく機能します

18