此问题已在此处有答案:
Convert string into slug with single-hyphen delimiters only(10个答案)
3年前关闭。
我正面临着一个问题与网址,我希望能够转换标题,可以包含任何东西,并有他们剥夺了所有特殊字符,使他们只有字母和数字,当然我想取代空格与连字符。
这将如何实现?我听说过很多关于正则表达式(regex)的使用。
此问题已在此处有答案:
Convert string into slug with single-hyphen delimiters only(10个答案)
3年前关闭。
我正面临着一个问题与网址,我希望能够转换标题,可以包含任何东西,并有他们剥夺了所有特殊字符,使他们只有字母和数字,当然我想取代空格与连字符。
这将如何实现?我听说过很多关于正则表达式(regex)的使用。
3条答案
按热度按时间dsekswqp1#
这应该是你想要的:
用法:
将输出:
abcdef-g
编辑:
嘿,只是一个快速的问题,我如何才能防止多个连字符彼此相邻?然后把它们换成1
ffx8fchx2#
改进清理
下面的解决方案有一个“SEO友好”版本:
上述功能的基本原理(我发现 * 方式 * 效率低下-下面的一个更好)是 * 一个服务,不应命名 * 显然运行拼写检查和关键字识别的网址。
在一个客户的偏执狂上失去了很长一段时间后,我发现他们根本不是在想象事情--他们的SEOMaven[我绝对不是一个]报告说,比如说,将“Viaggi Economy Perù”转换为
viaggi-economy-peru
比viaggi-economy-per
“表现更好”(之前的“清理”删除了UTF8字符;波哥大变成了波哥大,麦德林变成了梅德尔恩,等等)。还有一些常见的拼写错误似乎影响了结果,对我来说唯一有意义的解释是,我们的URL被拆开了,单词被挑出来,并被用来驱动上帝知道的排名算法。这些算法显然已经被输入了经过UTF8清理的字符串,因此“Perù”变成了“秘鲁”而不是“Per”。“每”不匹配,有点把它的脖子。
为了保留UTF8字符并替换一些拼写错误,下面的更快的函数变得更准确(?)功能以上。当然,
$dict
需要手工定制。上一个答案
一个简单的方法:
请注意,您可能必须首先
urldecode()
URL,因为%20和+实际上都是空格-我的意思是,如果您有“Never%20gonna%20give%20you%20up”,您希望它成为Never-gonna-give-you-up,而不是 * Never 20 gonna 20 give 20 you 20 up *。你可能不需要,但我想我应该提一下这个可能性。因此,完成的功能沿着测试用例:
为了处理UTF-8,我使用了一个在网上找到的
cleanString
实现(链接中断了,但是在答案的开头有一个包含所有不太深奥的UTF8字符的精简副本;如果需要的话,也可以很容易地添加更多的字符),它将UTF8字符转换为普通字符,从而尽可能地保留单词“look”。它可以被简化并 Package 在这里的函数中以提高性能。上面的函数也实现了转换为小写-但这是一种尝试。这样做的代码已被注解掉。
gorkyyrv3#
看看这个函数: