【问题标题】:simplify preg_replace to clean up url简化 preg_replace 以清理 url
【发布时间】:2013-12-03 12:46:38
【问题描述】:

我有一个这样的网址的一部分:2000+%26+Sale+%26+7867876876,我想像这样清理它2000-Sale-7867876876

到目前为止,我设法使用这两行来做到这一点

$canonical = preg_replace( '/\+/', '-', $canonical );
$canonical = preg_replace( '/\%26-/', '', $canonical );

这是最好的方法还是我可以简化成一行?

【问题讨论】:

    标签: php


    【解决方案1】:
    $canonical = str_replace('+%26+', '-', $canonical);
    

    【讨论】:

      【解决方案2】:

      如果你真的只需要改变...

      $canonical = "2000+%26+Sale+%26+7867876876";
      echo str_replace("+%26+","-",$canonical);
      // 2000-Sale-7867876876
      

      【讨论】:

        【解决方案3】:

        你也可以像这样使用 preg_replace

        $canonical = preg_replace( '/\+%26+-/', '', $canonical );
        

        【讨论】:

          【解决方案4】:

          您可以使用urldecode 并替换所有不是字母数字的内容:

          <?php
              $url = '2000+%26+Sale+%26+7867876876';
          
              $canonical = preg_replace(
                  array('/[^\w- ]+/', '/[- ]+/'), 
                  array(''          , '-'), 
                  urldecode($url)
              );
          
              var_dump($canonical); //string(20) "2000-Sale-7867876876"
          ?>
          

          DEMO

          这是一行,但为了便于阅读,这里多行填充。

          【讨论】:

            猜你喜欢
            • 2022-01-03
            • 2011-07-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-23
            • 1970-01-01
            • 2010-12-02
            • 2020-12-01
            相关资源
            最近更新 更多