2011-12-04 2 views
2

문자열 내 특정 문자를 제거하는 방법을 알고 있지만 다음 사항에 대해서는 잘 모릅니다 :php 특정 문자 사이에서 문자를 제거합니다.

예 : 문자열 : Code

이 가능 : Code [7845] [5589] [554] [4]

내가 그들 사이의 모든 []의 인스턴스와 모든 것을 제거해야하고 그래서 간단하게 끝낼 공백을 잘라?

+0

지금까지 해보신 것은 무엇입니까? 그것은 분명히 가능하며 단순한 표현 만 요구합니다. –

답변

1

는 다음과 같은 시도 :

$str = trim(preg_replace('/\[\d+\]/', '', 'your_string_here')); 

함수의 첫 번째 인수는 정규식입니다. 숫자가 일치하는 \d이 있고 그 뒤에 오는 +은 적어도 하나의 숫자와 일치해야한다고 말합니다. preg_replace에 대한 자세한 내용은 Check here을 참조하십시오. Regex에 대한 자세한 내용은 Check here을 참조하십시오.

+0

공백을 자르지 않습니다. – FailedDev

+0

@FailedDev, yep이 대답을 편집했습니다. –

5

이 그것을 할 것입니다 :)

$result = preg_replace('/\[.*?\]|\s*/', '', $subject); 

설명 : @Felix으로

" 
\[ # Match the character “[” literally 
.  # Match any single character that is not a line break character 
    * # Between zero and unlimited times, as many times as possible, giving back as needed (greedy) 
\] # Match the character “]” literally 
" 

이 상당히 쉬운 표현이다 지적한다. here을보고 다양한 기법을 익히십시오.

+1

+1 실무 답변! – nickb

+0

이 경우에도이 [12as]가 제거됩니다. 그는 단지 숫자 값을 묻습니다. –

+0

@SavasVedova 제 Englsh가 나를 배반하지 않으면, * 중간에있는 모든 것은 * 모든 것을 의미합니다. – FailedDev

1

요구 사항에 대한 자세한 내용을 제공해야합니다.

가정 : 문자열이 항상 후이고 나머지는 항상 폐기 할 수있는 시작

$s = 'Code [7845] [5589] [554] [4]'; 

경우,이 아마도 가장 효율적인 것 :

$s = trim(substr($s, 0, strpos($s, '['))); 

당신이 만약 원래 문자열을 유지하고 숫자 그룹 만 제거하려면 다음을 입력하십시오.

$s = trim(preg_replace('/\[\d+\]/', '', $s)); 
관련 문제