如何从原始输入生成URL slugs(SEO URL)

时间:2014-02-26 13:14:09

标签: php url replace format

现在,当用户在我的php网络应用程序中按下链接时,他们会发送到一个页面,其网址如下: domain.com/faq/item/18483/ domain.com/blog/item/37476 。但是我想为这些网址添加一个标题,以便用户能够了解链接背后的内容(例如:我与朋友分享了一个链接),如下所示: domain.com/faq/item/18483/I-have-a-question

如果我有这样的标题:

  • 这是一个常见问题项目
  • blog®!@#message& hello&

清理和转换为此格式的最佳方法是什么:

  • 这-是-A-FAQ项目
  • 博客消息问候

实际上就像stackoverflow和我的标题一样,我想创建这样的网址:http://stackoverflow.com/questions/22042539/how-to-generate-url-slugs-seo-urls-from-raw-input/

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式将非字母数字的所有内容更改为连字符:

function slugify($string) {
    // Make the whole string lowercase
    $slug = strtolower($slug);
    // Replace utf-8 characters with 7-bit ASCII equivelants
    $slug = iconv("utf-8", "ascii//TRANSLIT", $input);
    // Replace any number of non-alphanumeric characters with hyphens
    $slug = preg_replace("/[^a-z0-9-]+/", "-", $string);
    // Remove any hyphens from the beginning & end of the string
    return trim($slug, "-");
}

示例字符串的输出为:

echo slugify("this is a faq item");         // this-is-a-faq-item
echo slugify("blog ®!@# message &hello&");  // blog-message-hello