2

我正在编写一个博客,我希望 URI 成为像 stackoverflow 中的问题标题或 wordpress 一样的标题。
清理 URI 的规则是什么?
PHP中是否有已经制作的代码可以做到这一点?

提前致谢,
奥马尔

4

4 回答 4

6

这可能是用单个连字符替换任何非字母数字字符的最短方法:

trim(preg_replace('/[^a-z0-9-]+/', '-', strtolower($str)), '-')
于 2009-09-16T11:59:16.593 回答
6

下面是drupal 的做法

万一网站宕机:

<?php
function pathauto_cleanstring($string)
{
    $url = $string;
    $url = preg_replace('~[^\\pL0-9_]+~u', '-', $url); // substitutes anything but letters, numbers and '_' with separator
    $url = trim($url, "-");
    $url = iconv("utf-8", "us-ascii//TRANSLIT", $url); // TRANSLIT does the whole job
    $url = strtolower($url);
    $url = preg_replace('~[^-a-z0-9_]+~', '', $url); // keep only letters, numbers, '_' and separator
    return $url;
}
于 2009-09-16T15:57:57.020 回答
2

许多 CMS 已经实现了类似的东西,Wordpress 的一个已经发布在另一个问题中。您可能也对有关此技术的一般问题感兴趣。

于 2009-09-16T11:50:06.267 回答
2

通常,您会希望您的 URL 只有 0-9 和 az,并确保所有内容都是小写的。用破折号 (-) 替换空格,并去掉其余的乱码。

所以几乎已经想通了。

于 2009-09-16T11:56:17.940 回答