2013-05-13 107 views
0

時,我有以下的preg_replace函數preg_replace函數使用字符串

preg_replace('/[\$,Audio, CD, Audiobook, MP3 Audio, Unabridged]/','',$audibleinnertextpieces) 

這是我的正則表達式來更換任何一$或整個字符串

Audio, CD, Audiobook, MP3 Audio, Unabridged 

由於某種原因,它在消除在U我所有的字符串,我只想替換,如果發現整個字符串匹配Audio, CD, Audiobook, MP3 Audio, Unabridged

+0

爲什麼方括號內盒他們,讓一組? – hjpotter92 2013-05-13 15:26:39

+0

正則表達式不會那樣工作。你不能把整個單詞在一次聚集[..] – 2013-05-13 15:26:47

+0

類似的答案笑 – mpyw 2013-05-13 15:31:52

回答

0

在常規表達式方括號創建一個字符類,它就會從括號之間的任何字符一個單個字符。因此[abc]將匹配'a','b'或'c'。

如果要匹配$Audio, CD, Audiobook, MP3 Audio, Unabridged那麼你要交替,這是一個|分隔件完成:

preg_replace('/\$|Audio, CD, Audiobook, MP3 Audio, Unabridged/','',$audibleinnertextpieces) 
+0

我得到'str_replace'最好在這裏,但我想downvote是有點多。這個答案是正確的,它是唯一一個解釋OP的嘗試錯誤的人。 – 2013-05-13 15:31:28

3

您可以使用str_replace

str_replace(array('$', 'Audio, CD, Audiobook, MP3 Audio, Unabridged'), '', $str); 
3

不要對這些類型的搜索使用正則表達式。爲什麼不使用普通的str_replace?

$str = str_replace(array('$', 'Audio, CD, Audiobook, MP3 Audio, Unabridged'), '', $source_string); 
+0

如此簡單,我刪除我的回答:3 – 2013-05-13 15:29:47

2

爲什麼不直接使用str_replace代替:

str_replace(array('$','Audio, CD, Audiobook, MP3 Audio, Unabridged'),'',$string); 

如果你知道你想要更換完全匹配的字符串,正則表達式是矯枉過正。

0

您可以使用正則表達式

$regex = "/\$|Audio, CD, Audiobook, MP3 Audio, Unabridged/" 

將搜索無論是$符號還是整個字符串。 就用

$result = preg_replace($regex, '' ,$audibleinnertextpieces) 

這將剝奪任何的搜索項的出

+0

他想要替換整個字符串「音頻,CD,有聲讀物,MP3音頻,未刪節」 – SomeShinyObject 2013-05-13 15:35:05