【问题标题】:Producing SEO friendly URL in javascript在 javascript 中生成 SEO 友好的 URL
【发布时间】:2013-01-01 02:49:34
【问题描述】:

我有一个 PHP 函数可以将 URL 转换为 SEO 友好的 URL:

function seo_url($input){
     $input = str_replace(array("'", "-"), "", $input); //remove single quote and dash
     $input = mb_convert_case($input, MB_CASE_LOWER, "UTF-8"); //convert to lowercase
     $input = preg_replace("#[^a-zA-Z0-9]+#", "-", $input); //replace everything non an with dashes
     $input = preg_replace("#(-){2,}#", "$1", $input); //replace multiple dashes with one
     $input = trim($input, "-"); //trim dashes from beginning and end of string if any
     return $input;
}

我知道 SEO 对 javascript 中的 URL 执行此操作毫无意义,但为了保持一致性,我希望 URL 在我的应用程序中显示相同。有没有人在javascript中有方便的功能? :]

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    将不同的解决方案组合在一起,请考虑这个替代代码,单行代码:

    function toSeoUrl(url) {
        return url.toString()               // Convert to string
            .normalize('NFD')               // Change diacritics
            .replace(/[\u0300-\u036f]/g,'') // Remove illegal characters
            .replace(/\s+/g,'-')            // Change whitespace to dashes
            .toLowerCase()                  // Change to lowercase
            .replace(/&/g,'-and-')          // Replace ampersand
            .replace(/[^a-z0-9\-]/g,'')     // Remove anything that is not a letter, number or dash
            .replace(/-+/g,'-')             // Remove duplicate dashes
            .replace(/^-*/,'')              // Remove starting dashes
            .replace(/-*$/,'');             // Remove trailing dashes
    }
    

    【讨论】:

    • 很好,谢谢!
    【解决方案2】:

    看看这个 Javascript 模块(我是作者),它在浏览器和服务器/nodejs 中工作:
    SpeakingURL

    【讨论】:

    • 简单 - 易于使用,工作没有问题。谢谢! :)
    • @pid 链接已失效
    • 这是库github.com/pid/speakingurl的工作链接
    【解决方案3】:

    var url ="Evanston, IN 47531, USA pizza food & wine & music";
    
    document.write(ToSeoUrl(url));
      
    function ToSeoUrl(url) {
            
      // make the url lowercase         
      var encodedUrl = url.toString().toLowerCase(); 
    
      // replace & with and           
      encodedUrl = encodedUrl.split(/\&+/).join("-and-")
    
      // remove invalid characters 
      encodedUrl = encodedUrl.split(/[^a-z0-9]/).join("-");       
    
      // remove duplicates 
      encodedUrl = encodedUrl.split(/-+/).join("-");
    
      // trim leading & trailing characters 
      encodedUrl = encodedUrl.trim('-'); 
    
      return encodedUrl; 
    }

    【讨论】:

    • 注意encodedUrl = encodedUrl.trim('-'); 不会从字符串的开头/结尾删除-,因为.trim()没有任何参数。
    • 你先生,是救生员
    猜你喜欢
    • 2017-02-13
    • 2015-02-04
    • 2011-07-15
    • 2013-04-28
    • 2015-10-13
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2011-08-25
    相关资源
    最近更新 更多