2012-05-19 67 views
1

我有这样一组字符串:PHP字符串模式替换

Pants [+$50] 
Shirts [+$10] 
Jeans [+$5] 
Jackets [+$100] 

我如何删除“[XXX]在这些线路和只留下项目名称(不带空格)?有人告诉我,定义一个正则表达式,不知道这是如何工作的?

回答

1

这实际上是一个有点混乱的正则表达式,因为[]是特殊字符:

$str = 'Pants [+$50]'; 
$str = rtrim(preg_replace('/\[[^\]]*\]/', '', $str)); 

// 'Pants' 

基本上partern \[[^\]]*\]手段匹配字面[后跟0或更多不是]的字符,后跟]preg_replace中的第二个字符串是它被替换的内容。在这种情况下,因为我们想删除它,所以是空字符串。然后我们使用rtrim来修剪任何尾随的空格。

+0

谢谢!完美作品 –

+0

@JamesGu没问题:) – Paulpro

0

试试这个:

正则表达式

(?im)[ \t]*\[[^\]\[]+\][ \t]*$ 

代码

$result = preg_replace('/^(.+?)[ \t]*\[[^\][]+\][ \t]*$/im', '$1', $subject);