2012-05-19 113 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);