2011-03-25 6 views
10

아래의 변수 값에 $widget_text에서 대괄호 "["및 "]"를 제거하고 결과를 $widget_id에 저장해야합니다.문자열에서 특정 문자를 제거하는 방법은 무엇입니까?

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

사용 preg_replace, str_replace 또는 뭔가 다른?

+0

미키 엘의 대답이 작업을 완료,하지만 당신은 문자열에 어떤 검증을하고자 할 얻을 것이다? –

+1

@Col. S : 도움이되는 조언, 고맙습니다 .- –

답변

39

여러 가지 방법을 사용할 수 있으며 때로는 preg_replace/str_replace와 같은 동일한 작업을 수행 할 수 있습니다. 그러나 대괄호는 문자열의 시작 또는 끝에서만 제거하려는 경우가 있습니다. 이 경우 preg_replace가 작동합니다. 그러나 여러 대괄호가있을 수 있으면 preg_replace도 작업을 수행 할 수 있습니다. 그러나 손질은 더 쉽고 더 합리적입니다.

preg_replace이다()이 -이 텍스트의 아무 곳이나

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

트림 (괄호를 제거) - -

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

않는 str_replace()를 시작하고 뒤에 괄호

제거합니다 브래킷을 트리밍 처음부터 끝까지

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

SUBSTR()는 -() 괄호는 첫 번째와 마지막 위치에 항상 경우

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

+1입니다. –

+0

@ Scott B : np, 당신은 이미 알고 있다고 생각했습니다. _how_ str_replace를 사용합니다. –

+0

예 :이 경우에는 트림 옵션이 실제로 좋을 수도 있습니다. 그것의 사소한 Col.로 나타내는 어느 쪽이든 의미합니다. –

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

'$ widget_id = str_replace (배열 ('[', ']'), '', $ widget_text);'더 나은 –

+0

@ 카를로스 : 감사합니다! 유용한 설명과 사용 사례 예제는 –

1

(텍스트 내의 닫는 괄호를 포함하지 않는 위젯 텍스트를 가정) 트림과 동일하지 않습니다, 이것을 사용 :

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

나는이 빠른 방법이라고 생각 ...

+1

가장 빠른 방법 : $ widget_text = 'widget_and-some-text'; : P –

+0

하지만 농담은 제쳐두고, 동등한 preg_replace (array ('/^\ [/', '/ \] $ /'), '', $ widget_text) –

관련 문제