在javascript中生成SEO友好的URL

el_*_*_le 7 javascript regex

我有一个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;
}
Run Code Online (Sandbox Code Playgroud)

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

小智 11

看看这个javascript模块(我是作者),在浏览器和服务器/ nodejs中工作 http://pid.github.io/speakingurl/

希望这可以帮助

  • 简单 - 易于使用,工作没有问题。谢谢!:) (2认同)

小智 6

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

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
}
Run Code Online (Sandbox Code Playgroud)


boa*_*eng 5

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; 
}
Run Code Online (Sandbox Code Playgroud)