2013-07-29 22 views
1

正則表達式的幫助這裏是我的代碼:一個新手

$searchTerm='/9j/4AAQSkZJ'; 
$searchTerm = preg_replace('/\/(+s)\//i','',$searchTerm); 

我試圖從$searchTerm刪除/9j/

這是專門斜槓,則沒有空格的字符集和整數然後斜線

有什麼不對我的表現?

+1

如果你爲你的正則表達式分隔符(例如'#/(+ s)/#i')使用它會更容易閱讀 –

+0

@AlexGittemeier對不起,我仍然是一個新手正則表達式。我的表達式轉義了/,那麼爲什麼當我需要修復特定模式時,我會在那裏放一個#號? – jkushner

+0

http://regexr.com?35obj呢? – 2013-07-29 05:17:32

回答

1

,則應該更換+s.*

而且,沒有必要爲i

$newTerm = preg_replace('/\/(.*)\//', '', $searchTerm); 

這裏測試:http://regexpfiddle.com/

+1

+1從很好的答案,並提供問題的快速解決方案和解決方案。 –

0

嘗試不同的分隔符:

preg_replace('~/\w+/~','',$term); 
+0

小心,'\ w'匹配的不僅僅是*「一組沒有空格的字符和整數」* – Phil

+0

對,它也匹配下劃線。我不知道'(+ s)'應該是什麼意思。 – elclanrs

+0

我猜這是爲了'\ S +' – Phil

4
$newTerm = preg_replace('#/[a-z0-9]+/#i', '', $searchTerm); 

用其他東西代替/分隔符(在我的示例中爲#)使得它更易於閱讀,特別是如果您的模式恰好包含/個字符。使用另一個分隔符意味着你不需要跳過斜槓。

0

試試這個:

preg_replace('#/.*/#', '', $searchTerm); 
0
$searchTerm='/9j/4AAQSkZJ'; 
$searchTerm = preg_replace('~^/\S+/~','',$searchTerm); 
1

我不知道你在哪裏得到了什麼作爲在正則表達式有意義+s

個人而言,我會建議這樣的:

$searchTerm = explode("/",$searchTerm,3)[2]; 

但請注意,在上最新的PHP這隻作品。對於舊版本,你需要:

$searchTerm = explode("/",$searchTerm,3); 
$searchTerm = $searchTerm[2]; 

如果你想有一個正則表達式,試試這個:

$searchTerm = preg_replace("(^/[^/]+/)","",$searchTerm); 

此正則表達式使用括​​號作爲分隔符(你從來沒有逃避什麼避免衝突,如果你使用圓括號,因爲它們是匹配的對),它從字符串的開始處開始,尋找斜線,然後查找不是斜線的東西,然後是第二個斜線,然後將其全部刪除。