이 대답은 공백과 탭과 관련된 입니다. 물론 도 트리밍/압축을하는 데 다른 종류의 공백을 포함하려고하지만 CR 및/또는 LF을 보존하려고합니다.
먼저 몇 가지 상수를 설정해 보겠습니다. 이렇게하면 수정이 필요하게되면 이해가 쉽고 유지 보수가 용이 해집니다. 유사점과 차이점을 더 쉽게 비교할 수 있도록 몇 가지 여분의 공간을 두었습니다.우리는 대신에 라인 지향 meta-characters이다 전형적인 ^
및 $
의 피사체의 시작과 끝을 지정 \A
및 \Z
escape characters를 사용하는
define('S', '[ \t]+' ); # Stuff you want to compress; in this case ONLY spaces/tabs
define('L', '/\A'.S.'/' ); # stuff on the Left edge will be trimmed
define('M', '/'.S.'/' ); # stuff in the Middle will be compressed
define('R', '/'.S.'\Z/'); # stuff on the Right edge will be trimmed
define('T', ' ' ); # what we want the stuff compressed To
. 이것은 많은 사람들이 "방어적인"프로그래밍만큼이나 많이 필요하기 때문에 나중에 필요하게하기 위해 S
값을 변경해야합니다. 비밀 소스를위한 지금
: 우리는
배열보다 교체 적은 요소가있는 경우, 즉
을 (강조는 추가) preg_replace의 특별한 의미를 활용할 예정 패턴 배열에서 추가 패턴은 빈 문자열로 바뀝니다.
function trim_press($data){
return preg_replace([ M, L, R ], [ T ], $data);
}
그래서 대신 패턴 문자열 대체 문자열 우리 L
및 R
트리밍되는 여분의 패턴 결과 패턴 어레이와 여분의 어레이를 사용하고있다.
모든 * 탭을 관계없이 제거하려고합니까, 아니면 컬럼 형식을 유지하기를 원하십니까? – Synetech
답변을 다시 평가하고 다른 답변을 수락해야한다고 생각합니다. – Jeff