2013-04-25 3 views
0

나는 다음과 같은 압축() 함수가 : 나는 어떤 바꿈을 포함하지 않도록 출력 HTML 코드를 압축하는 데 사용하고while() 루프를 사용하지 않으려면이 compress() 함수를 어떻게 다시 작성해야합니까?

function compress($input){ 
    $from = array("\r\n", "\n"); 
    $to = array('', ''); 
    $output = str_replace($from, $to, $input); 
    while(true){ 
     $output = str_replace(" ", " ", $output); 
     if (strpos($output, " ") === FALSE){ 
     break; 
     } 
    } 
    return $output; 
} 

,도 2 개 이상의 연속적인 공간.

정규식 바꾸기를 사용하면이 방법이 더 빠르고 최적화되었는지 궁금합니다. 그러나, 그렇다고하더라도, 나는 그것을하는 방법을 모르겠습니다.

아이디어가 있으십니까?

답변

2

방법에 대해 :

return preg_replace(
    '# {2,}#', 
    ' ', 
    preg_replace(
     '#\r?\n#s', 
     '', 
     $input 
    ) 
); 

나는 당신이 제안, 더 이상하고 무엇을하지 않습니다 믿습니다. 테스트가 더 빨라지거나 더 효율적인지에 대해서는 몇 가지 테스트를 실행해야합니다. preg_replace은 일반적으로 비교적 비쌉니다. 여기서 두 번 호출하기 때문에 상당한 오버 헤드가 있습니다. 그러나 이것은 p_r을 사용하여 어떻게 할 수 있는지 보여주는 예입니다.