2010-02-25 7 views
0

사용자가 정말로 긴 문자열을 입력하면 두 번째 줄로 이동하지 않아 내 사이트의 페이지가 손상됩니다. URL이 아닌 경우 어떻게 문자열을 가져와 완전히 제거합니까?문자열에서 긴 단어를 제거하는 방법

+1

''요소를 검색 할 수 있습니다. – zzzzBov

답변

4

왜 사용자가 쓴 제거 할 것인가? 대신, 새로운 라인에 랩 - 그 작업을 수행하는 PHP에서 함수가 호출 wordwrap

+0

그러나 실제로는 그 4 개의 param을 true로 설정하여 실제로 이러한 긴 문자열을 자릅니다! – Shinhan

+0

wordwrap은 긴 단어뿐만 아니라 전체 문자열을 손상시킵니다. – Rob

+0

질문에 답하지 않았습니다. 질문을 변경하거나 답변을 변경하십시오. 긴 말을 제거해야하는 무한한 이유가 있습니다. 시간이 끝날 때까지 가능한 모든 시나리오/응용 프로그램을 상상하거나 예측할 수 있다고 가정하지 마십시오. 아마 "pneumonoultramicroscopilicovolcanoconoosis"의 45 명의 기계가 특정 용도에 대한 합리적인 한계 일 수 있습니다. –

3

정말로 단어를 삭제 하시겠습니까, 아니면 단지 페이지 레이아웃을 너무 넓게 만드시겠습니까? 후자가 더 원하는 경우 CSS를 사용하여 오버플로를 관리하는 것이 좋습니다. 예를 들어

:

사업부 { 오버 플로우 : 숨겨진; }

은 div 경계를 초과하는 콘텐츠를 숨 깁니다.

여기에 CSS 오버 플로우에 대한 추가 정보를 원하시면있어 : http://www.w3schools.com/css/pr_pos_overflow.asp

3
// remove words over 30 chars long 
$str = preg_replace('/\S{30,}/', '', $str); 

편집 : 팀 P의 제안에 따라 업데이트, \ S는 아닌 공백 문자 ([^\s]과 동일)과 일치 그것은 정말로 긴 URL이

//This will break up the long words with spaces so they don't stretch layouts. 
$str = preg_replace('/(\S{30,})/e', "wordwrap('$1', 30, ' ', true)", $str); 
+1

/w 대신/S를 사용하는 것이 좋습니다. 구두점, 숫자 및 기타 특수 문자로 긴 문자열을 잡을 수도 있습니다. –

+0

$ str = preg_replace ('/ (\ S {30,})/e', "wordwrap ('$ 1', 30, '', true)", $ str); 무엇? 실제 긴 문자열을 리터럴 워드 랩 명령으로 대체 하시겠습니까? 너 왜 그런 짓을 한거야? – Shinhan

+0

'e'수정자는 대체 문자열을 평가합니다. – Rob

0

어떤 경우 :

또한 여기에 자동 줄 바꿈 사용 ehdv의 제안을 통합하는 더 좋은 방법이 무엇입니까? 어쨌든 왜 텍스트를 유효한 URL과 일치시키고 그 URL 만 수락합니까? some php-regex info on URLs을 확인하고 작동 방식을 확인하십시오. Regular Expressions Cookbook에는 URL 일치에 대한 좋은 장이 있습니다.

0

@Rob은 REGEX를 사용하여 관리합니다. 실적 전망대.

관련 문제