programing tip

문자열에서 줄 바꿈 (문자 없음)을 제거하는 방법은 무엇입니까?

itbloger 2020. 6. 30. 20:53
반응형

문자열에서 줄 바꿈 (문자 없음)을 제거하는 방법은 무엇입니까?


이것은 속임수처럼 보이지만 확실하지는 않습니다. 나는 웹의 나머지 부분뿐만 아니라 SO를 검색하여 내 문제에 대한 답을 찾았으며 동일한 불충분 한 "해결책"을 반복해서 찾았습니다. 어쨌든, 여기에 간다 :

텍스트 영역의 사용자 입력을 MySQL 데이터베이스 (WordPress 환경 내)에 저장하고 있지만이 문제와 관련이 없습니다. 나중에 DB에서 검색되어 사이트 백엔드의 관리자에게 표시됩니다. 사용자가 줄 바꿈이있는 텍스트를 제출할 때 문제가 발생합니다 (예 : Enter 키를 누름).

샘플 문자열은 다음과 같습니다.

Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!

Greetings,
Bill

문자열에는 줄 끝 문자 ( "\ n", "\ r"등)가 없습니다.

nl2br()HTML 출력을 생성하는 데 사용 하고 있지만 충분하지 않습니다. 결과는 다음과 같습니다.

Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill

내가 이해하는 한, nl2br()태그를 삽입하고 처음에 줄 바꿈을 대체하지 않기 때문에 예상되는 결과는 무엇입니까?

그러나 필요한 형식은 다음과 같습니다.

Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill

문자열에 "\ n"과 같은 EOL 문자가 포함되어 str_replace()있거나 문자열을 사용하여 preg_replace()수행 했거나 수행 할 수는 있지만 문자가 없으면 해당 기능 중 하나를 공급할 바늘이 없습니다. 처음에.

DB의 관련 필드에 수동으로 액세스하고 모든 줄 바꿈에 대해 백 스페이스를 누르고 나중에 문자열 작업으로 수행하려는 작업을 수행 할 수 있습니다. 따라서 위의 형식이 필요하다는 것을 알고 있습니다.


모든 줄 바꿈과 캐리지 리턴을 제거하는 preg으로 대체 할 수 있어야합니다. 코드는 다음과 같습니다

preg_replace( "/\r|\n/", "", $yourString );

\n문자가 나타나지 않더라도 캐리지 리턴을 받으면 보이지 않는 문자가 있습니다. preg replace는 그것들을 잡고 수정해야합니다.


Ben의 솔루션 은 수용 가능하지만 str_replace ()preg_replace () 보다 훨씬 빠릅니다.

$buffer = str_replace(array("\r", "\n"), '', $buffer);

적은 CPU 전력을 사용하여 세계 이산화탄소 배출량을 줄입니다.


$str = "
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill";

echo str_replace(array("\n", "\r"), '', $str);  // echo $str in a single line

nl2br()줄 바꿈을 전혀 제거하지 않기 때문 입니다.

반환와 문자열 <br />또는 <br> 이전에 삽입 된 모든 줄 바꿈 ( \r\n, \n\r, \n\r).

str_replace대신 사용하십시오 :

$string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string);

PHP 트림을 사용할 수도 있습니다

이 함수는 str의 시작과 끝에서 공백이 제거 된 문자열을 반환합니다. 두 번째 매개 변수가 없으면 trim ()은 다음 문자를 제거합니다.

  • ""(ASCII 32 (0x20)), 일반 공간.
  • "\ t"(ASCII 9 (0x09)), 탭.
  • "\ n"(ASCII 10 (0x0A)), 새 줄 (줄 바꿈).
  • "\ r"(ASCII 13 (0x0D)), 캐리지 리턴
  • "\ 0"(ASCII 0 (0x00)), NUL 바이트
  • 세로 탭 "\ x0B"(ASCII 11 (0x0B))

Windows에서도 올바르게 작동하려면 사용하는 것이 좋습니다.

$buffer = str_replace(array("\r\n", "\r", "\n"), "", $buffer);

"\r\n"-Windows, "\r"-Mac 및 "\n"Linux-


str_replace (PHP_EOL, null, $ str);


좀 더 기능적인 것 (어디서나 사용하기 쉬운) :

function strip_carriage_returns($string)
{
    return str_replace(array("\n\r", "\n", "\r"), '', $string);
}

검색 대체 매개 변수로 PHP_EOL사용하는 것도 좋습니다. 명성.


이 작업을 수행하기 위해 3 줄을 사용하므로 $ s 를 "재료"로 고려 하십시오.

$s=str_replace(chr(10),'',$s);
$s=str_replace(chr(13),'',$s);
$s=str_replace("\r\n"),'',$s);

참고 URL : https://stackoverflow.com/questions/10757671/how-to-remove-line-breaks-no-characters-from-the-string

반응형