2012-02-24 3 views
22

이 작동하지 않습니다 : 문자열이 거기에 "\ n"문자가없는문자열에 새로운 줄 바꿈이 있는지 감지하는 방법은 무엇입니까?

$string = 'Hello 
    world'; 

if(strpos($string, '\n')) { 
    echo 'New line break found'; 
} 
else { 
    echo 'not found'; 
} 

분명하기 때문이다. 그러나 사용자가 양식 필드에서 Enter 키를 누를 때 줄 바꿈이 있는지 확인하려면 어떻게해야합니까?

+1

'\ n'을 PHP_EOL로 바꾸어보세요. –

+2

어쩌면 큰 따옴표 ''\ n "'또는'preg_match ('/ [\ n \ r]/')' – biziclop

+0

을 입력해야 할 것입니다. 입력 한 양식을 제출하는 방법을 궁금하십니까? 그렇다면 필요가 없습니다. 제출 버튼이 제출 버튼 일 때, 입력 버튼을 눌러 제출해야합니다. – CoffeeRain

답변

50

줄 바꿈 문자 ('\n')를 큰 따옴표로 묶지 않으므로 기존 테스트가 작동하지 않습니다.

if(strstr($string, PHP_EOL)) {

는 또한 strpos 0을 반환하고 문이 첫 번째 경우 FALSE로 평가되므로주의 : 당신은 크로스 운영 체제 호환성을 원하는 경우,

if(strstr($string, "\n")) {

또는 :로 변경 문자는 \n이므로 strstr이 더 나은 선택입니다. 또는 당신이에 strpos 사용을 변경할 수 있습니다 :

if(strpos($string, "\n") !== FALSE) { 
    echo 'New line break found'; 
} 
else { 
    echo 'not found'; 
} 
+2

친애하는 사용자로부터받은 라인 엔딩은 서버가 아닌 사용자의 컴퓨터에 의존하지 않습니까? – biziclop

+0

난 그냥 넓은 뇌졸중에서 이야기하고있다 ... 항상 모든 상황에서 내 코드가 작동하도록'PHP_EOL'을 사용하려고 노력한다. 그러나 사용자가 제공하는 데이터를 처리하는 경우에 맞습니다. – rdlowrey

+3

이것은 PHP_EOL이 운영 체제마다 다르므로 좋지 않은 대답입니다. – kjdion84

3

줄 바꿈은 창에 \r\n이며, UNIX 시스템에서이 \n입니다. 이므로 OS 간 호환성을 위해 "\ n"대신 PHP_EOL을 검색하거나 "\ r \ n"과 "\ n"을 모두 검색하십시오.

+1

두 줄 바꿈에'\ n '이 포함되어 있으면 단순히 줄 바꿈을 "감지"하기 위해 교차 운영 체제와 호환되도록'\ n '을 검색해야합니다. – MrWhite

관련 문제