我的正则表达式出了什么问题?

时间:2011-10-13 08:41:21

标签: php regex

为什么此代码显示my/url/而不是my/url

<?php

    $url = "/my/url/";
    echo preg_replace("#^/?(.+)/?$#","$1",$url);

?>

3 个答案:

答案 0 :(得分:7)

默认情况下,您(.+)贪婪。通过在?之后添加+来使其不合适。

echo preg_replace("#^/?(.+?)/?$#","$1",$url);

CodePad

你也可以使用trim($url, '/'),这比正则表达式更合适。

答案 1 :(得分:2)

只需使用trim()

即可
$url = '/my/url/';
echo trim($url, '/');

答案 2 :(得分:-1)

因为你.+会占用任何角色。使它成为任何字符,除了斜杠,它将起作用; - )。