简化preg_replace以清理URL

时间:2013-12-03 12:46:39

标签: php

我有这样一个网址的一部分:2000+%26+Sale+%26+7867876876我希望像2000-Sale-7867876876

一样清理它

到目前为止,我设法使用这两行

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

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

4 个答案:

答案 0 :(得分:0)

$canonical = str_replace('+%26+', '-', $canonical);

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您也可以像这样使用preg_replace

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

答案 3 :(得分:0)

您可以使用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

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