2011-10-13 68 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