2011-10-13 70 views
2

为什么此代码显示my/url/而不是my/url我的正则表达式有什么问题?

<?php 

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

?> 
+0

它可能不是解决你的问题,但你需要逃避你'/'文字是这样的:'\ /'。 – Bojangles

+1

'trim($ url,'/'); //做这个工作# – powtac

+3

@JamWafles:当使用'#'作为正则表达式分隔符时,情况并非如此。 – alex

回答

7

您的(.+)默认为贪婪。通过在+之后添加?使其不明确。

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

CodePad

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

+0

Thx为提示哥们! – Falydoor

-1

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

+1

不,它不会 - 在需要匹配的字符串中间有一个斜杠。 –

+0

哦,对,我的坏,对不起。 – JNDPNT

2

只需使用trim()

$url = '/my/url/'; 
echo trim($url, '/'); 
+0

+1'trim()'是所有需要的。 – alex