2014-03-26 3 views
0

이전 메인 프레임 테이블의 LONG (720 자) 문자열이 있습니다. 녹색 화면에 텍스트를 배치하는 방법으로 공백을 사용하기 때문에 흰색 공백이 많습니다.PHP에서 단어 랩 (wordwrap)이 예상대로 작동하지 않습니다.

PHP (아래 코드)에서 단어 랩을 사용하여 그 녹색 화면을 시뮬레이션하려고합니다. 나는 $ INC 명령을 사용하는 대신 코드에서 필드의 호출을 직접 사용하려고 시도했다.

나는 결과를 htmlentities로 변환 한 다음 결과를 nl2br'ing하려고 시도했습니다.

빈 공간을 공백으로 변환하려고했습니다. 내가

내가도 4에서 포장 문자의 수를 변경 시도 (그냥 테스트로) 다른 것들에 특수 문자를 교체 시도

,이 경우 모든 지옥 나누기 느슨한에 만에 보인다 공백 앞뒤에있는 문자 그룹에 몇 개의 문자가 있더라도 상관없이 공백을 없앱니다.

"1: B-140(GR) ON 140VHF F1 W/"A ZONE (#) GENERAL ALARM" T & L2: REPEAT STEP 1." 

L 및 2 (일반 알람 T & 등 L 2) 사이에 휴식해야합니다

그러나, 해당 문자열의 텍스트에 해당 문자열 내에서 세그먼트가있다. true로 설정된 cut 부울 값을 사용하더라도 L2를 2 줄로 자르는 것을 거부합니다. (심지어 문자의 양을 61 또는 63으로 이동하더라도) 문자열은 "L2 :"세그먼트를 따로 분리하지 않습니다. 공백에서 L보다 먼저 또는 공백에서 콜론 뒤에 만 잘라냅니다.

CODE 
$instructions = (wordwrap($instructions,60, "<br />\n", true)); 

무엇이 누락 되었습니까? documentation for wordwrap에 따르면

+0

L2는 워드로 간주 될 때 그 중 하나를 L2 전에 중단 또는 후의 것이다. 그리고 당신이 그것을 사실로 설정했기 때문에 단어가 60자를 만날 때 깨질 것입니다. 그들이 너무 큰 단어들만 깨기 AFAIK, – Prix

답변

0

(숨겨진 카메라를 찾습니다) : "컷 TRUE로 설정하면, 문자열은 항상 지정된 폭 또는 이전에 싸여있다." 다시 말해이 함수는이 특정 응용 프로그램에 대해 잘라내지 않습니다.

다른 방법은 60 개 문자로 정확하게 절단 요소들의 어레이를 생성 str_split을 사용하는 것이다 :

$instructions = '1: B-140(GR) ON 140VHF F1 W/"A ZONE (#) GENERAL ALARM" T & L2: REPEAT STEP 1.'; 
$instructions_array = str_split($instructions, 60); 

foreach ($instructions_array as $line) { 
    echo $line."<br />\n"; 
} 
+0

Absolutely Brilliant! 위대한 작품! 문서화로 인해 나는 Looooooooong 예제에서와 같이 두 단어를 잘라 냈을 것이라고 믿게되었습니다. – phpags

+0

예, 문서의 예가 이상적이지 않습니다. 다행이 도움이! – larsAnders

관련 문제