2011-03-25 33 views
10

Tôi cần phải xóa dấu ngoặc vuông "[" và "]" từ $widget_text trong giá trị biến bên dưới và lưu kết quả trong $widget_id.Phương pháp để loại bỏ các ký tự cụ thể khỏi chuỗi?

$widget_text = '[widget_and-some-text]'; 
$widget_id = ?; 

Sử dụng preg_replace, str_replace hoặc cái gì khác?

+0

câu trả lời Michiel sẽ giúp bạn thực hiện, nhưng làm bạn muốn làm bất cứ xác minh trên chuỗi? –

+1

@Col. S: Cảm ơn lời khuyên hữu ích, sans crap ;-) –

Trả lời

39

Có một số phương pháp có sẵn và đôi khi chúng có thể được thực hiện để thực hiện chính xác tác vụ tương tự, như preg_replace/str_replace. Nhưng, có lẽ bạn muốn loại bỏ các dấu ngoặc chỉ từ đầu hoặc cuối của chuỗi; trong trường hợp đó preg_replace hoạt động. Tuy nhiên, nếu có thể có nhiều dấu ngoặc đơn, preg_replace cũng có thể thực hiện công việc. Nhưng cắt dễ dàng hơn và có ý nghĩa hơn.

preg_replace() - xóa bỏ đầu và đuôi ngoặc

$widget_id = preg_replace(array('/^\[/','/\]$/'), '',$widget_text);  

str_replace() - điều này loại bỏ dấu ngoặc bất cứ nơi nào trong văn bản

$widget_id = str_replace(array('[',']'), '',$widget_text); 

trim() - Trims dấu ngoặc từ đầu và cuối

$widget_id = trim($widget_text,'[]') 

substr() - không giống như trim() (giả sử các văn bản phụ tùng không bao gồm bất kỳ dấu ngoặc đóng cửa trong văn bản)

$widget_id = substr($widget_text, 
        $start = strspn($widget_text, '['), 
        strcspn($widget_text, ']') - $start 
      ); 
+3

+1 cho các giải thích hữu ích và ví dụ về trường hợp sử dụng. –

+0

@Scott B: np, chỉ ra rằng bạn đã biết _how_ để sử dụng str_replace –

+0

Yep: Tôi thực sự có thể thích tùy chọn cắt trong trường hợp này. Tầm quan trọng của nó hoặc là như Col. –

6
$widget_id = str_replace('[', '', str_replace(']', '', $widget_text)); 
+5

'$ widget_id = str_replace (mảng ('[', ']'), '', $ widget_text);' tốt hơn –

+0

@Carlos: Cảm ơn! –

1

Nếu ngoặc là luôn luôn ở vị trí đầu tiên và cuối cùng, sử dụng này:

$widget_id = substr($widget_text, 1, strlen($widget_text)-2); 

tôi nghĩ rằng đây là một cách nhanh hơn ...

+1

Cách nhanh nhất: $ widget_text = 'widget_and-some-text'; : P –

+0

Nhưng đùa sang một bên, nó phải nhanh hơn so với preg_replace tương đương (mảng ('/^\ [/', '/ \] $ /'), '', $ widget_text) –

Các vấn đề liên quan