2010-11-22 22 views
0

我有一個字符串:簡單的PHP正則表達式問題

$uri = "start/test/go/"; 

基本上我需要知道哪些正則表達式和PHP函數,我可以使用的第一個項目正斜槓(「/」)相匹配,將其取下來自字符串。如果第一個項目沒有啓動,它也應該工作,並且是其他任何可能也有空間的項目。 因此,所有這些組合應該工作:

$uri = "start_my_test/test/go/"; 
$uri2 = "start my test/test/go/"; 

然後正則表達式後,它應該總是返回:

$newUri = "test/go/"; 

哦,串的另一側可以是任何東西爲好,所以基本上我希望它在第一次出現正斜槓之前刪除任何東西。

乾杯

回答

0
$result = preg_replace('/^[^\/]*\//' , '', $subject); 

這是說「開始在字符串的開頭」 ^「匹配不是正斜槓任何數量的字符」 [^\/]*,則匹配單個正斜槓\/ - 和「用什麼都替換整個匹配的東西」''

+0

由於這是一個正則表達式的問題,你的答案是正確的和作品。但性能明智的非正則表達式的答案更可行。 – 2010-11-22 22:44:00

+0

好吧,性能差異非常小 - 我們正在談論幾個處理週期,除非您連續運行數十萬次,否則沒有人會注意到。所以它歸結爲代碼清晰度,可維護性和風格選擇。就代碼清晰度而言,`strstr`可能是解決這個問題的更好的解決方案,但從風格上講,我傾向於選擇正則表達式,因爲我個人覺得它們很熟悉並且易於閱讀。 – 2010-11-22 22:46:52

4

使用strstr可以在php中查找第一個出現的字符串。

本身應該返回字符串的其餘部分。

see here

0

正則表達式是太貴了,你需要什麼樣的操作。使用strpossubstr代替

$position = strpos($needle, $haystack); 
if ($position !== false) { 
    $result = substr($needle, $position + 1); 
}