2013-08-28 2 views
0

줄 끝에서 모든 줄 바꿈을 제거하려면 어떻게해야합니까?PHP : 문자열 끝에있는 모든 줄 바꿈을 제거하는 방법

$string = "Hello<br/>my Text<br> <br/> <br /> <br    /> <br  >"; 

나는이 결과를 얻으려면 싶습니다 $string = preg_replace('#((){0,}<br({0,})(/{0,1})>){1,}$#i', '', $string); 작동하지 않았다 같은 Hello<br/>my Text

이 도움이되지 않았다합니다.

여기 내 문제를 해결하지 않은 비슷한 게시물이 있습니다. remove <br>'s from the end of a string

당신에게 대단히 감사합니다 톰

답변

0

이 작업을 수행했습니다. $string=preg_replace('/\s+/',' ', trim($string)); echo preg_replace('#(?:(?: *)?<br */?>)+$#', '', $string);

0

REGEX 정말 DOM 구문 분석하기위한 것이 아닙니다,하지만 당신이 그것을 사용하도록 선택 /해야 할 경우,이 그것을 수행해야합니다

preg_replace('/<br *\/?>(?!\w)/', '', $string); 

필요가 없어 <br /> 태그 (공백없이 또는 자기 닫는 슬래시 포함)는 영숫자 문자 바로 뒤에 나오지 않으므로 첫 번째 문자는 보존됩니다.

그래도 REGEX의 한계점을 강조합니다. 뒤에 영숫자 문자가없는 태그를 보관할 수도 있습니다. 이 경우 REGEX가 제공 할 수있는 제품이 많지 않습니다. 대조적으로, DOM 파서는 각 컨테이너가 컨테이너의 마지막 자식이기 때문에 후행 태그를 반복적으로 제거 할 수 있습니다.

당신은 여전히 ​​제거 된 태그 사이의 공백으로 남아있을 것입니다,하지만 당신은 그럼 그냥 trim() 결과 또는 그것에 추가 REGEX 실행할 수 있습니다

preg_replace('/\s*$/', '', $string); 
+0

'에코 preg_replace이다 ('/
(\ w)/g?!', '', $ 문자열);' 출력 아무것도하지 않았다. 어떤 생각? –

+0

사과 - 요즘 자바 스크립트가 너무 많습니다. 지금 시도해보십시오. – Utkanos

1

이것은 정규식를 만든 방법입니다 :

를 그래서
#<br>#     // bare <br> 
#<br */?>#    // <br> with internal spaces and maybe a slash 
#(?: *)?<br */?>#  // maybe there are spaces in front 
#(?: *)?<br */?>$#  // at the end of the line 
#(?:(?: *)?<br */?>)+$# // the whole thing one or more times at the end of the line 

:

echo preg_replace('#(?:(?: *)?<br */?>)+$#', '', 'Hello<br/>my Text<br> <br/> <br /> <br    /> <br  >'); 
// Output: Hello<br/>my Text 

Regular expression visualization

Debuggex은 내 친구입니다.

+0

이 문자열은 실패합니다! '$ 문자열 = " 내 문자 1

내 문자 2





";' 왜? –

+0

Debuggex에서 위의 설명과 일치한다고 말합니다. –

+0

@TomSenner 나를 PHP에서 작동합니다. : I – Sammitch

관련 문제