我正试图在我的网站上进行一些SEO改进。我想在我的网址中添加一些文字。我正在尝试向网址添加信息。我从项目中获取“产品名称”(或标题)并将其附加到URL。因此,如果“Core 2 Duo 8600 CPU”的ID为10,则旧URL为:
example.com/cpu/10
现在,我想附加产品名称,所以它将是:
example.com/cpu/10/core-2-duo-8600-CPU/
问题是我不想在那里使用特殊字符,也不需要重音字(这是一个西班牙语网站),所以我建立了这个功能:
function makeFriendlyURL($string){
$search = explode(",","ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u");
$replace = explode(",","c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u");
$string = str_replace($search, $replace, $string);
$string = preg_replace("/[^A-Za-z0-9]/"," ",$string);
$string = preg_replace('/\s+/', '-',trim($string));
return strtolower($string);
}
makeFriendlyURL('Técnico electricista') //tecnico-electricista (accented é is replaced with e)
makeFriendlyURL('RAM 1066/1333') // ram-1066-1333 (striped the slash and lowercase "RAM")
现在,你看到有什么问题吗?我认为它可以改进,但不知道如何。
答案 0 :(得分:2)
此代码可以改进吗?
在这些情况下,您可以更轻松地定义您想要的内容而不是您不想要的内容,因为这是每个更改列表。
这是一个典型的代码,它会从标题中创建一个slu ::
// translate accented chars
$search = explode(",","ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u");
$replace = explode(",","c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u");
$string = str_replace($search, $replace, $string);
// create slug by replacing non-alphanumeric chars with a dash
$slug = trim(preg_replace('/[^a-z0-9]+/', '-', strtolower($string)), '-');
注意:作为网址,我添加了strtolower()
。如果您真的想在URL中使用大写字母,请随意将其删除。