V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tianxiacangshen
V2EX  ›  PHP

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

  •  
  •   tianxiacangshen · 2017-10-21 21:35:23 +08:00 · 2816 次点击
    这是一个创建于 2593 天前的主题,其中的信息可能已经有所发展或是发生改变。
    句子中有一些符号 比如句号 ., ‘’等都不能存在于 url 中,那么如何去掉这些非法字符呢?目前用的笨办法,全部用 str_replace 替换掉,有现成的函数或者类吗?

    比如 Decision making, after the fact 这句,转换到 url 中就是 decision-making-after-the-fact.html 去掉一些非法字符
    9 条回复    2017-10-22 11:31:57 +08:00
    tianxiacangshen
        1
    tianxiacangshen  
    OP
       2017-10-21 21:42:07 +08:00   ❤️ 1
    已经找到方法:

    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
        2
    nifury  
       2017-10-21 22:36:59 +08:00
    urlencode?
    feiyuanqiu
        3
    feiyuanqiu  
       2017-10-21 22:46:53 +08:00   ❤️ 1
    关键词 slugify

    比如 https://github.com/cocur/slugify
    autoxbc
        4
    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
        5
    Sikoay  
       2017-10-22 00:14:44 +08:00 via Android
    看文档 urlencode
    oh
        6
    oh  
       2017-10-22 02:00:48 +08:00
    urlencode 就是解决这个问题的,实在不行还可以 base64 啊,逐字替换总会有遗漏的,encode 才是王道
    tianxiacangshen
        7
    tianxiacangshen  
    OP
       2017-10-22 09:23:37 +08:00
    @nifury
    @Sikoay
    @oh

    urlencode 转换出来完全合法,但并不利于 seo,比如空格,逗号,引号什么的都转化成了包含百分号的编码,不利于 seo
    shiji
        8
    shiji  
       2017-10-22 10:19:29 +08:00
    @tianxiacangshen 搜索引擎收录的时候也一样会 urldecode 的。 不利于 SEO 有什么依据么?
    tianxiacangshen
        9
    tianxiacangshen  
    OP
       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

    对用户体验,和对搜索引擎的友好度不言自明
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:44 · PVG 04:44 · LAX 12:44 · JFK 15:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.