我在 StackOverflow 网站上注意到的一些事情:
如果您访问 StackOverflow.com 上问题的 URL:
该网站将问题的名称添加到 URL 的末尾,因此变为:
“https://stackoverflow.com/questions/10721603/grid-background-image-using-imagebrush”
太好了,我知道这会使 URL 更有意义,并且可能是一种很好的 SEO 技术。
在 StackOverflow 上看到这个实现后我想要实现的目标
我希望在我的网站上实现同样的功能。我很高兴使用header()
301 重定向来实现这一点,但我正在尝试提出一个可以解决问题的紧凑脚本。
到目前为止我的代码
// Set the title of the page article (This could be from the database). Trimming any spaces either side
$original_name = trim(' How to get file creation & modification date/times in Python with-dash?');
// Replace any characters that are not A-Za-z0-9 or a dash with a space
$replace_strange_characters = preg_replace('/[^\da-z-]/i', " ", $original_name);
// Replace any spaces (or multiple spaces) with a single dash to make it URL friendly
$replace_spaces = preg_replace("/([ ]{1,})/", "-", $replace_strange_characters);
// Remove any trailing slashes
$removed_dashes = preg_replace("/^([\-]{0,})|([\-]{2,})|([\-]{0,})$/", "", $replace_spaces);
// Show the finished name on the screen
print_r($removed_dashes);
问题
我已经创建了这段代码,从外观上看它运行良好,它使字符串 URL 对人眼友好且可读。但是,我想看看是否有可能简化或“收紧”一点......因为我觉得我的代码可能过于复杂。
我并不希望它放在一行上,因为我可以通过将函数相互嵌套来做到这一点,但我觉得可能有一种整体上更简单的方法来实现它——我正在寻找想法。
综上所述,代码实现了以下几点:
- 删除任何“奇怪”字符并用空格替换它们
- 用破折号替换任何空格以使其对 URL 友好
- 返回一个没有任何空格的字符串,单词用破折号分隔,并且没有尾随空格或破折号
- 字符串可读(不包含百分号和 + 符号,例如简单地使用
urlencode()
谢谢你的帮助!
潜在的解决方案
我在写这篇文章时发现,我正在寻找所谓的 URL 'slug',它们确实对 SEO 有用。
我在 Google 代码上发现了这个库,它似乎在第一个实例中运行良好。
在 SO 上还有一个值得注意的问题,可以在此处找到,其中还有其他示例。