2009-08-26 78 views
8

Nếu tôi có một chuỗi như thế này:php: xóa dấu ngoặc/nội dung khỏi chuỗi?

$str = "blah blah blah (a) (b) blah blah blah"; 

Làm thế nào tôi có thể regex để đầu ra là:

$str = "blah blah blah blah blah blah"; 

Nó cần để có thể hỗ trợ bất kỳ số lượng các cặp khung bên trong một chuỗi.

Trả lời

36

này nên làm như lừa:

$str = trim(preg_replace('/\s*\([^)]*\)/', '', $str)); 

Note, câu trả lời này loại bỏ khoảng trắng xung quanh khung quá, không giống như những gợi ý khác.

Cắt trong trường hợp chuỗi bắt đầu bằng phần được đặt trong ngoặc vuông, trong trường hợp khoảng trắng sau nó không bị xóa.

+0

Lưu ý rằng điều này sẽ vi phạm "(())" hoặc bất kỳ dấu ngoặc đơn không cân bằng nào, nhưng đó có thể không phải là vấn đề. – Mark

1
$string = preg_replace('~\(.*?\)~', '', $string); 
3

Hãy thử điều này:

preg_replace('/\([^)]*\)|[()]/', '', $str)