用URL中的短划线替换空格

Rob*_*a55 15 php url-rewriting

我设法替换了特殊字符,例如:; 我的URL中的/ etc,但现在又有了空格.这是我的代码:

<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>
Run Code Online (Sandbox Code Playgroud)

我希望它喜欢删除特殊字符以及用短划线替换空格.

ka_*_*lin 35

尝试 str_replace(' ', '-', $string);

  • 最简单的解决方案,您可以添加无效字符数组,例如 str_replace(array(" ", ";"), array("-", "_"), $str) (3认同)

Chr*_*don 18

你可以使用preg_replace:

preg_replace('/[[:space:]]+/', '-', $subject);
Run Code Online (Sandbox Code Playgroud)

这将使用单个" - "破折号替换所有空间实例.所以,如果你有一个双倍,三倍等空间,那么它仍会给你一个破折号.

编辑:这是我去年使用的generec功能,使我的网址整洁

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

它会将所有非字母数字字符转换为空格,然后将所有空格转换为破折号,然后修剪字符串结尾/开头的任何破折号.这比在str_replace中列出特殊字符更有效

  • 将其放在文件中(例如“ helpers.php”),并在文件开头以&lt;?php require_once('helpers.php');包含在代码中。?&gt;在调用函数之前。这样,您可以在多个文件中重用它,而不必在每个文件中键入或声明函数。 (2认同)