2008-09-30 2 views
2

사용자가 업로드 한 RTF 문서를 가져 와서 일부 사람의 데이터를 문자 (이름, 주소 등)로 병합하는 스크립트가 있으며 여러 사람에게이 작업을 수행합니다. 편지 내용을 병합 한 다음 모든 편지에 병합하여 다음 병합 편지 내용과 결합합니다.PHP (REGEX)의 RTF 파일 연결하기

나는 편지를 병합해야하는 많은 사람들 레코드에 대해 하나의 RTF 문서를 결합하고 있습니다. 그러나 먼저 닫는 RTF 마크 업을 제거하고 각 병합의 RTF 마크 업을 열어야합니다. 그렇지 않으면 RTF가 올바르게 렌더링되지 않습니다. 이것은 정규 표현식에 대한 작업처럼 들립니다.

} \ n 개의 \ 페이지 아무것도 \ 파

예,이 정규식이 일치합니다 :

는 기본적으로 나는 전체 문자열을 제거하는 정규식이 필요

crap 
} 
\page{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}} 
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 September 30, 2008\par 
more crap 

그래서 내가 할 수있는 그냥 확인하십시오 :

crap 
\page 
more crap 

RegEx가 가장 좋은 방법입니까?

업데이트 : 왜 RTF를 사용해야합니까?

사용자가 시스템이 병합 된 편지를 만드는 데 사용할 양식 편지를 업로드 할 수있게하려고합니다. RTF는 평범한 텍스트이기 때문에 코드에서이를 아주 쉽게 할 수 있습니다. 나도 알아, RTF 사양의 재앙이지만, 나는 다른 좋은 대안을 모르겠다.

답변

2

이 경우 RTF 사용에 의문이 생깁니다. 전반적으로 무엇을하려하는지 명확하게 밝히지는 않았으므로 반드시 더 나은 제안을 할 수는 없지만 프로젝트를 더 광범위하게 설명 할 수 있다면 어쩌면 도움이 될 수 있습니다. 내가 싫어지기를 싫어지기를 싫어지기 말할 수있는이에

$output = preg_replace("/}\s?\n\\\\page.*?\\\\par\s?\n/ms", "\\page\n", $input); 
+0

더 나은 질문으로 다시 게시 해 드리겠습니다. 당신의 도움을 주셔서 감사합니다. – Justin

+0

이 답변은 PHP 5.4 이상에서만 작동하는 솔루션을 보았 기 때문에 실제로 도움이되었습니다. 그러나 어떻게 든 5.3에 고정되어 있습니다. –

1

:

이 정말 그래도 가고 싶은 방법입니다 경우

이 정규식은 나에게 입력을 주어 올바른 출력을했다. 그럼에도 불구하고 RTF가 실제로 그 형식으로 끝나지 않는 별난 경우를 제외하고는 rcar의 진흙탕이 제대로 작동하지 않을 수도 있고 문서 전체 스타일에 서식을 완전히 망가 뜨리는 중요한 정보 또는 여러 가지 실패 모드가 포함될 수도 있습니다.

관련 문제