2012-11-26 5 views
1

임 여기에 다시 질문 :제거 브레이크 라인 ( n을) "

것은이 전 PHP의 문자열이 같은 있다고 가정 해 봅시다 :

Lorem ipsum dolor sit amet, consectetur 
adipiscing elit. "Sed et est eget lorem congue 
eleifend. Fusce luctus" 

오른쪽, 당신은 문자열을 볼 수 있도록 그 두 개의 따옴표 노래 ---> ", 맞아, 그 두 개의 따옴표 사이에 텍스트가있는 경우,이 같은 휴식 줄을 안됩니다, 방법은 PHP에서 preg_replace 함수와 함께 정규식에서 휴식 줄을 대상으로 그 두 기호 사이에 그들을 삭제합니까? 당신의 시간들에 대한

감사합니다, 마트

+0

아니오, 브레이크 라인을 제거하고 싶습니다. 브레이크 라인 만 두 개의 따옴표로 둘러싸여 있습니다. "... – Martin

답변

2

일치하거나 중첩 된 요소 (이 경우 일치하는 인용 부호)와 관련된 문제는 일반적으로 정규 표현식에 다소 어색합니다.

먼저 여기에서 가정을합니다. 따옴표 안에 이스케이프 된 인용 부호는 입력 할 수 없습니다 (예 : Lorem "ipsem \" dolor" 또는 이와 유사한 내용이 없음).

이 가정에서 문제는 다음과 같습니다. \n 다음에 홀수 인 " (문자열 끝까지 계산)이옵니다. 이 조건을 보장하기 위해 미리보기를 사용할 수 있습니다. 선행 공백이나 후행 공백에 문제가 발생하지 않도록하려면 \n을 둘러싼 공백을 모두 일치시키고 단일 공백으로 대체하십시오.

$result = preg_replace('/\s*\n\s*(?=[^"]*"(?:[^"]*"[^"]*")*[^"]*$)/', ' ', $input); 

당신은 [\r\n]\n 그 상호 운용성을 대체 할 수 있습니다.

+0

그 자체가 완벽합니다. 내 친구 ... 설명과 시간을 보내 주셔서 대단히 감사합니다! 고마워! – Martin