我正在写一个小的CMS,我试图把一个标题变成一个带短划线的URL段落。我知道我需要做几件事,而且我已经掌握了所有的东西,但我不喜欢它。问题似乎是,如果最后有特殊字符,我需要在进入数据库之前将其删除。我唯一能想出来的方法是在一个声明中做2个preg_replace。所以它看起来是这样的:必须有一个更好的正则表达式
preg_replace("/\-$/","",preg_replace('/[^a-z0-9]+/i', "-", strtolower($title)));
,它并把这种:(this is a title!!!)))**that is (strange))
这个:this-is-a-title-that-is-strange
但这种表达只是看起来像驴。必须有更好的编码方式,或者其他的东西,我只是不知道。任何帮助将不胜感激
请注意,对于以无效字符开头的标题,您可能还需要删除'/^- + /'。另外,如果你的第一个正则表达式是'/ - + $ /'来删除多个破折号? – 2011-03-10 04:30:25
可能有一种方法可以将命令缩减为单个函数调用,但您现在拥有的方式是可读可读的,单功能版本不太可能是这些东西。 – 2011-03-10 04:31:34
@Brad:他仍然需要将字符串中的字母小写,即使进行了修改。 – 2011-03-10 04:31:58