2012-12-04 100 views

回答

1

如果您試圖拆分路徑中的目錄,則可以將正則表達式保留在工具箱中並使用explode()

$parts = explode('/', $path); 
+0

如果你還傳遞'3'的'$ limit','$ parts [2]'將包含第二個'/'後的所有內容。 – cmbuckley

+0

是的,我試圖避免編寫一個附加或任何PHP通過使用現有的一個通過正則表達式,並取代無正則表達式。另外,我需要返回第二個'/',而不是將它們用作分隔符。 – curtisblackwell

0

由於/沒有任何意義,我假設你想知道位置。你可以用preg_match_all第四個參數做:

preg_match_all('~/~', $input, $matches, PREG_OFFSET_CAPTURE); 
$pos = $matches[0][1][1]; 

索引到$matches是相當可怕的,雖然。第一個索引對應於捕獲。 0是整個比賽,1,2,3等將是捕獲組(括號內的括號組)的結果,這裏你沒有。第二個索引對應於匹配。你想要第二場比賽,所以你想要索引1。最後一個索引是0表示實際匹配/捕獲的字符串,1表示匹配/捕獲的偏移量。

0

你想匹配第二個斜槓,沒有別的?試試這個:

preg_match('~^/[^/]+\K/~', '/dir/entry'); 

\KMATCH POINT RESET結構:遇到真實時,正則表達式引擎「忘記」的任何字符它迄今所看到的,並且就像當前匹配位置是比賽的開始。例如,如果你想與@更換第二斜線,你通常會做這樣的:

preg_replace('~^(/[^/]+)/~', '[email protected]', '/dir/entry'); # /[email protected] 

但是,如果你在一個情況下,你不能使用捕獲組的時候,\K將設置你的權利:

preg_replace('~^/[^/]+\K/~', '@', '/dir/entry'); # /[email protected] 

\K只在我知道的Perl和PHP中被支持。

相關問題