2013-07-08 50 views
2

我知道preg_replace('/[{}]/', '', $string);會消除大括號,但是如果我也有方括號也需要刪除它們呢?從字符串中刪除多個符號

+0

將它們添加到角色類中,並進行適當的轉義 – Robert

回答

2

包括方括號(逃)到字符類:/[{}\[\]]/

+0

不確定你是否擁有_have_來逃避開放課程中的[[] - 但這只是挑剔 –

+0

@EliasVanOotegem:好點!可以在'charclass'中使用'[''']。至於我,如果兩個括號以相同的方式轉義(IMHO),則正則表達式更具可讀性。 [在非字母數字之前加上「\」來指定它代表它本身總是安全的](http://www.php.net/manual/en/regexp.reference.escape.php) –

0

你不得不逃避它:

/[{}[\]]/ 
+0

我不是'當然,但在這裏,爲downvoter http://stackoverflow.com/questions/5484084/what-literal-characters-should-be-escaped-in-a-regex – elclanrs

+0

答案是完全正確的; downvote的原因是神祕的... +1 –

0

當你正在尋找一個括號去除:

$str = preg_replace("/\[([^\[\]]++|(?R))*+\]/", "", $str); 

這將轉換爲:

This [text [more text]] is cool 

這樣:

This is cool 

編輯

$string = '<p>hey</p><p>[[{"type":"media","view_mode":"media_large","fid":"67","attributes":{"alt":"","class":"media-image","height":"125","typeof":"foaf:Image","width":"125"}}]]</p>'; 
$new_string = preg_replace('/\[\[.*?\]\]/', '<b>img inserted</b>', $string); 

echo $new_string; 

讓我知道,如果我能幫助您進一步。

+0

你忘記大括號? – Brian

+0

它正在爲我工​​作.. :) @ A.S.Roma同時檢查我更新的答案更多的想法 – liyakat

1
preg_replace('/[{}\[\]]/', '', $string); 

你應該適當的轉義將它們添加到類在正則表達式

$string = 'asdf{[]a]}ds'; 
echo preg_replace('/[{}\[\]]/', '', $string); 

輸出asdfads

3

爲什麼要通過使用正則表達式此的麻煩。如果你正在做的是從一個字符串中取代4個字符:

str_replace(array('[',']','{','}'),'',$string); 

會做同樣的事情。