2013-12-20 2 views
0

PHP 스크립트로 가져온 플랫 파일이 있습니다. 출력의PHP에서 대괄호 안에 들어있는 문자열의 마지막 부분을 어떻게 제거 하시겠습니까?

예 :

Forks [Office] 
Glue [Crafts] 
Jacks [Toy] 

나는 각 줄의 끝에 괄호뿐만 아니라, 괄호 사이에 자신을 텍스트를 제거하고 싶습니다.

"rtrim"이라고 생각했지만 문자 길이가 다릅니다.

"폭발"일까요?

+1

에 의해 제안 더 나은

strrpos에 strpos에서 편집 될 것이다. – j08691

+0

무엇을 이미 시도 했습니까? – BenM

+0

@BenM'rtrim'이고'explode'라고합니다. = p – Katana314

답변

3

사용 preg_replace

$newValue = trim(preg_replace('/\\[([^\\]]*?)\\]/','',$oldValue)); 

이 정규식이 어떻게 작동하는지에 대한 설명 :

[] 그렇게 [^\]] 어떤 문자 가 닫는 대괄호가 아니라고 일치하는 문자의 범위를 일치 (당신이 []은 정규 표현식 연산자이므로 백 슬래시를 사용하여 문자를 이스케이프 처리합니다. * 연산자는 0 또는 그 이상의 임의의 문자와 일치하도록 범위를 수정하고 ?은 비 - 욕심 (첫 번째 ]이 발견되면 중지됨). 이 모든 것을 그룹의 안에 넣고 () 그리고 나서 당신이 찾고있는 것이 있습니다. 문자열의 내부에서 작동하도록 백 슬래시를 벗어나야합니다. 이 Regex Cheat Sheet은 빠른 참조를 위해 유용하지만 정규식을 처음 사용하는 방법에 대한 몇 가지 기사를 읽어야합니다. 프로그래머가 가질 수있는 가장 강력한 도구입니다. 각 라인 다음

+0

여분의 공백을 제거하기 위해 괄호 앞에'\ s +'를 추가 할 수 있습니다. – Florent

+0

'trim()'은 최종 제품의 공백이있는 경우에 더 좋을 것입니다. 제안을 위해 편집 – sjagr

3

루프 통 :

$line = substr($line, 0, strrpos($line, '[')); 

정규 표현식 아마 정규식 가장 쉬운 해결책처럼 보인다 제시카

+1

[이전에 발생하면 strrpos를 사용합니다. http://www.php.net/manual/en/function.strrpos.php - 정규 표현식이 그것을 할 수있는 동안, 이것은 잘 작동 할 훨씬 간단한 해결책입니다. – Jessica

관련 문제