【问题标题】:Shortening this function缩短此功能
【发布时间】:2012-05-23 15:48:19
【问题描述】:

我编写这段代码是为了准备链接的标题,但我认为它有点笨重,我想知道是否有人对正则表达式有更好的理解,可以减少以下函数(通过合并相关的 preg_replaces)。我需要它来去除所有当前的连字符,去除多个空格,确保除了替换空格的连字符之外它只是字母数字,用单个连字符替换所有空格并确保字符串不以连字符开头:

function prepareURLTitle($title)
{

return preg_replace("/\A-/", "", str_replace(" ", "-", preg_replace("/[^a-zA-Z0-9\s]/", "", preg_replace('/\s\s+/', ' ', preg_replace('/\s?-/', '', $title)))));

}

输入和输出示例:

输入:

全新 - 手套,2 件装 //这里有多个空格,但块引用不允许我显示它们

输出:

全新手套 2 件装

【问题讨论】:

    标签: php regex url


    【解决方案1】:
    trim(preg_replace('`[^a-z0-9]+`i','-',str_replace("'",'',$title)),'-')
    

    我还将引号替换为空,因此“The cat's meow”之类的字符串不会变成“The-cat-s-meow”。

    【讨论】:

      【解决方案2】:
      function prepareURLTitle($title)
      {
         return preg_replace("[^A-Za-z0-9]+", "-", $title);
      }
      

      这应该可行。您需要将多个非字母数字字符替换为单个“-”。

      【讨论】:

        【解决方案3】:
        preg_replace('~[^a-z\d]+~i','-',preg_replace('~^[^a-z\d]+(.*?)[^a-z\d]+$~i','$1',$title));
        // or
        preg_replace(array('~^[^a-z\d]+(.*?)[^a-z\d]+$~i','~[^a-z\d]+~i'),array('$1','-'),$title);
        

        举个例子……

        $title = '  BRAND   NEW -   Gloves, 2 pack -  ';
        echo preg_replace(array('~^[^a-z\d]+(.*?)[^a-z\d]+$~i','~[^a-z\d]+~i'),array('$1','-'),$title);
        

        会回来

        全新手套 2 件装

        【讨论】:

          【解决方案4】:
          function prepareURLTitle($title)
          {
             return preg_replace( "/[^a-zA-Z0-9]/", "-",str_replace("-", "",  $title));
          }
          

          演示:http://codepad.org/lPSQQBys

          输出:

          全新--手套--2 件装

          【讨论】:

          • 这将导致 BRAND NEW - Gloves, 2 pack 变为 BRAND-NEW---Gloves--2-pack
          • @kevlar1818 我修好了(有点)。
          • 只用连字符替换所有非字母数字字符。特别是像“foo: bar”这样的例子会变成“foo--bar”,而那应该变成“foo-bar”。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-11
          • 1970-01-01
          • 1970-01-01
          • 2022-01-24
          相关资源
          最近更新 更多