[php] 문자열에서 줄 바꿈을 제거하고 하나의 빈 공간으로 교체하십시오.

$string = "
put returns between paragraphs

for linebreak add 2 spaces at end

";

문자열에서 모든 새 줄을 제거하고 싶습니다.

나는이 정규식을 가지고 있는데, 그것들을 모두 잡을 수 있습니다. 문제는 내가 어떤 기능을 사용 해야하는지 모르겠다는 것입니다.

/\r\n|\r|\n/

$string 되어야한다 :

$string = "put returns between paragraphs for linebreak add 2 spaces at end ";



답변

이중 줄 바꿈에주의해야합니다. 이렇게하면 이중 공백이 생길 수 있습니다. 이 효율적인 정규 표현식을 사용하십시오.

$string = trim(preg_replace('/\s\s+/', ' ', $string));

여러 공백과 줄 바꿈이 단일 공백으로 바뀝니다.

편집 : 다른 사람들이 지적 했듯이이 솔루션에는 단어 사이에 단일 줄 바꿈이 일치하는 문제가 있습니다. 이 예에는 나와 있지 않지만 상황이 어떻게 발생할 수 있는지 쉽게 알 수 있습니다. 대안은 다음을 수행하는 것입니다.

$string = trim(preg_replace('/\s+/', ' ', $string));


답변

허용 된 답변에 대한 몇 가지 의견 :

+수단 “1 개 이상”. 반복 할 필요는 없다고 생각합니다 \s. 나는 당신이 단순히 쓸 수 있다고 생각합니다 '/\s+/'.

또한 문자열에서 공백을 먼저 제거하고 마지막으로 제거하려면을 추가하십시오 trim.

이러한 수정으로 코드는 다음과 같습니다.

$string = preg_replace('/\s+/', ' ', trim($string));


답변

그냥 사용 preg_replace()

$string = preg_replace('~[\r\n]+~', '', $string);

str_replace()코드가 깨끗해 보이지는 않지만이 문제를 해결할 수 있습니다 .

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

이데 오네에서 생방송보기


답변

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


답변

속도와 배열에 큰 따옴표를 사용하려면 str_replace를 사용해야합니다

str_replace(array("\r\n","\r"),"",$string);


답변

이것이 이미 제출 된 답변에 대해 가치가 있는지 확실하지 않지만 게시 할 수 있습니다.

// Create an array with the values you want to replace
$searches = array("\r", "\n", "\r\n");

// Replace the line breaks with a space
$string = str_replace($searches, " ", $string);

// Replace multiple spaces with one
$output = preg_replace('!\s+!', ' ', $string);


답변

preg_replace를 사용하여 PCRE 정규식 교체를 수행 할 수 있습니다 :
http://php.net/manual/en/function.preg-replace.php

$new_string = preg_replace("/\r\n|\r|\n/", ' ', $old_string);

줄 바꾸기를 바꾸거나 공백으로 문자를 반환합니다. 대체하지 않으려면 두 번째 인수를로 변경하십시오 ''.