0

可能重复:
自动清理和 SEO 友好的 URL(slug)

我需要一个像 Wordpress 一样制作“干净的 URL 字符串”的函数。例如:“This is a string with frénch and gêrmän special chars + other mean stuff and I would like to use it as an URL” 应转换为:“this-is-a-string-with-french-and -german-special-chars-other-mean-stuff-and-id-like-to-use-it-as-an-url"

请帮助我的懒惰,这已经是艰难的一天了:-)

4

3 回答 3

3

在标题为 SEO 友好的 URL 下,有许多(许多)示例可用。

http://www.intrepidstudios.com/blog/2009/2/10/function-to-generate-a-url-friendly-string.aspx

function generateSlug($phrase, $maxLength)
{
    $result = strtolower($phrase);

    $result = preg_replace("/[^a-z0-9\s-]/", "", $result);
    $result = trim(preg_replace("/[\s-]+/", " ", $result));
    $result = trim(substr($result, 0, $maxLength));
    $result = preg_replace("/\s/", "-", $result);

    return $result;
}

$title = "A bunch of ()/*++\'#@$&*^!%     invalid URL characters  ";

echo(generateSlug($title));

// outputs
a-bunch-of-invalid-url-characters
于 2012-10-08T19:35:16.583 回答
1

我将通过提示您明天需要做什么来帮助您今天的懒惰:

$final_string = str_replace(
    array(' ', 'ă', 'â', 'ä'),
    array('-', 'a', 'a', 'a'),
    $initial_string
);

这可以有很多变体,例如使用 RegEx ( preg_replace) 来匹配某些字符组,例如多个空格/制表符/换行符 ( \s*) 或应该具有相同替换的多个字符 ( ă|â|ä)。

$final_string = preg_replace(
    array('/\s*/', '/ă|â|ä/'),
    array('-', 'a'),
    $initial_string
);
于 2012-10-08T19:34:46.693 回答
0

使用vanialla PHP 函数获得的最接近的函数是urlencode(),但这并不完全按照您问题中的示例输出。

例如:

$my_string = strtolower(urlencode("This is a string with frénch and gêrmän special chars + other mean stuff and I'd like to use it as an URL"));
echo $my_string;

将产生:

this+is+a+string+with+fr%e9nch+and+g%earm%e4n+special+chars+%2b+other+mean+stuff+and+i%27d+like+to+use+it+as+an+url

不幸的是,要匹配 WordPress 的功能,您要么必须根据他们的算法编写一个函数,要么从头开始编写一个。

于 2012-10-08T19:35:54.073 回答