PHP:这个代码性能有问题吗?可以改进吗?

时间:2011-09-21 18:25:00

标签: php regex performance url

我正试图在我的网站上进行一些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")

现在,你看到有什么问题吗?我认为它可以改进,但不知道如何。

1 个答案:

答案 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中使用大写字母,请随意将其删除。