2013-05-13 51 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) 

这将剥夺任何的搜索项的出