我在StackOverflow网站上发现了一些事情:
如果您在StackOverflow.com上访问问题的网址:
网站将问题的名称添加到网址末尾,因此会变为:
"https://stackoverflow.com/questions/10721603/grid-background-image-using-imagebrush"
这很好,我知道这会使URL更有意义,并且可能是SEO的一种技术。
在StackOverflow上看到此实现后我想要实现的目标
我希望在我的网站上实现同样的功能。我很高兴使用header()
301重定向来实现这一目标,但我试图想出一个可以解决问题的紧凑脚本。
我的代码到目前为止
Please see it working by clicking here
// 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友好且易于人眼阅读。但是,我想看看是否有可能简化或“收紧”......因为我觉得我的代码可能过于复杂。
我希望它放在一条线上并不是那么多,因为我可以通过将功能嵌套到另一条线来做到这一点,但我觉得可能有一种更简单的方法来实现它 - 我正在寻找想法
总之,代码实现了以下目标:
urlencode()
感谢您的帮助!
我在写这篇文章时发现,我正在寻找所谓的URL'slug',它们确实对SEO很有用。
{p> I found this library on Google code appears to work well in the first instance。在SO which can be found here上还有一个值得注意的问题,其中有其他例子。
答案 0 :(得分:1)
我试着像你一样玩preg。然而,当你开始看外语时,它变得越来越复杂。 我最终做的只是修剪标题,并使用urlencode
$url_slug = urlencode($title);
我还必须添加:
$title = str_replace('/','',$title); //Apache doesn't like this character even encoded
$title = str_replace('\\','',$title); //Apache doesn't like this character even encoded
还有第三方库,例如:http://cubiq.org/the-perfect-php-clean-url-generator
答案 1 :(得分:0)
确实,你可以这样做:
$original_name = ' How to get file creation & modification date/times in Python with-dash?';
$result = preg_replace('~[^a-z0-9]++~i', '-', $original_name);
$result = trim($result, '-');
要处理其他字母,您可以使用此模式:
~\P{Xan}++~u
或
~[^\pL\pN]++~u