24

: ; などの特殊文字を置き換えることができました。/ などを 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>

特殊文字を削除し、スペースをダッシュ​​に置き換えることを気に入ってもらいたいです。

4

2 に答える 2

52

試すstr_replace(' ', '-', $string);

于 2013-01-30T09:38:24.643 に答える
27

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に特殊文字をリストするよりもうまく機能します

于 2013-01-30T09:40:12.417 に答える