【问题标题】:URL save regex functionURL 保存正则表达式功能
【发布时间】:2011-07-18 20:01:59
【问题描述】:

我看到网站接受任何字符串并用单个 - 替换所有非字母数字字符

我该怎么做?

【问题讨论】:

  • 这被称为“slugifying”一个 URL。它比单个正则表达式涉及更多。您使用什么语言?

标签: php regex


【解决方案1】:

我在捷克语中使用了这样的函数:

function Slugify($string) {
  $withdiacritic = array_merge(str_split("říšěžťčýůňúěďáéó", 2), array(" ", "/"));
  $woutdiacritic = array_merge(str_split("riseztcyunuedaeo", 1), array("-", "-"));

  $string = mb_strtolower($string);
  $string = str_replace($withdiacritic, $woutdiacritic, ($string));
  $string = preg_replace('/[^a-zA-Z0-9-]/', '-', $string);

  return $string;
}

附加值是它比将所有非标准字符转换为-更具可读性。

编辑

您可能还想添加一行

$string = preg_replace('~-{2,}~', '-', $string);

摆脱长 - 序列。

【讨论】:

    【解决方案2】:

    在 PHP 中?

    可能有更好/更有效的模式,但我只是通过这个函数传递我的字符串:

    function remove_accents($str)
    {
        return preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($str, ENT_QUOTES, 'UTF-8'));
    }
    
    猜你喜欢
    • 2020-10-29
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多