如何将一个英文句子转换成合法的 url

2017-10-21 21:35:23 +08:00
 tianxiacangshen
句子中有一些符号 比如句号 ., ‘’等都不能存在于 url 中,那么如何去掉这些非法字符呢?目前用的笨办法,全部用 str_replace 替换掉,有现成的函数或者类吗?

比如 Decision making, after the fact 这句,转换到 url 中就是 decision-making-after-the-fact.html 去掉一些非法字符
2818 次点击
所在节点    PHP
9 条回复
tianxiacangshen
2017-10-21 21:42:07 +08:00
已经找到方法:

function besturl($str, $replace=array(), $delimiter='-') {
if( !empty($replace) ) {
$str = str_replace((array)$replace, ' ', $str);
}

$clean = preg_replace(array('/Ä/', '/Ö/', '/Ü/', '/ä/', '/ö/', '/ü/'), array('Ae', 'Oe', 'Ue', 'ae', 'oe', 'ue'), $str);
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $clean);
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);

return $clean;
}

来源: https://stackoverflow.com/questions/4783802/converting-string-into-web-safe-uri
nifury
2017-10-21 22:36:59 +08:00
urlencode?
feiyuanqiu
2017-10-21 22:46:53 +08:00
关键词 slugify

比如 https://github.com/cocur/slugify
autoxbc
2017-10-21 22:53:47 +08:00
javascript

'Decision making, after the fact'.match(/\w+/g).join('-')
// "Decision-making-after-the-fact"
Sikoay
2017-10-22 00:14:44 +08:00
看文档 urlencode
oh
2017-10-22 02:00:48 +08:00
urlencode 就是解决这个问题的,实在不行还可以 base64 啊,逐字替换总会有遗漏的,encode 才是王道
tianxiacangshen
2017-10-22 09:23:37 +08:00
@nifury
@Sikoay
@oh

urlencode 转换出来完全合法,但并不利于 seo,比如空格,逗号,引号什么的都转化成了包含百分号的编码,不利于 seo
shiji
2017-10-22 10:19:29 +08:00
@tianxiacangshen 搜索引擎收录的时候也一样会 urldecode 的。 不利于 SEO 有什么依据么?
tianxiacangshen
2017-10-22 11:31:57 +08:00
@shiji 这个很简单,比如写一篇英文文章,标题是 “ Find Website Traffic, Statistics, and Analytics ”

如果使用 urlencode 转化为 url 是:Find+Website+Traffic%2C+Statistics%2C+and+Analytics

如果使用上面写的函数则是:find-website-traffic-statistics-and-analytics

对用户体验,和对搜索引擎的友好度不言自明

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/399553

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX