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);

这将用一个“-”破折号替换所有空间实例。因此,如果您有双倍、三倍等空间,那么它仍然会给您一个破折号。

编辑:这是我去年用来整理我的 URL 的通用函数

    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 回答