문제

이 문자열에서 :

$input = "Some terms with spaces between";

이 배열을 어떻게 생산할 수 있습니까?

$output = ['Some', 'terms', 'with', 'spaces', 'between'];
도움이 되었습니까?

해결책

당신은 사용할 수 있습니다 explode, split 또는 preg_split.

explode 고정 문자열을 사용합니다.

$parts = explode(' ', $string);

동안 split 그리고 preg_split 정규 표현식 사용 :

$parts = split(' +', $string);
$parts = preg_split('/ +/', $string);

정규 표현식 기반 분할이 유용한 예 :

$string = 'foo   bar';  // multiple spaces
var_dump(explode(' ', $string));
var_dump(split(' +', $string));
var_dump(preg_split('/ +/', $string));

다른 팁

$parts = explode(" ", $str);
print_r(str_word_count("this is a sentence", 1));

결과 :

Array ( [0] => this [1] => is [2] => a [3] => sentence )

정규 표현 Gumbo가 게시 한 정규 표현은 대부분의 경우에 충분할 것입니다. 모든 흰색 공간을 잡을 수는 없다고 언급 할 가치가 있다고 생각했습니다. 예 : 아래 문자열에서 승인 된 답변에서 정규 표현식을 사용합니다.

$sentence = "Hello                       my name    is   peter string           splitter";

print_r을 통한 다음 출력을 제공했습니다.

Array
(
    [0] => Hello
    [1] => my
    [2] => name
    [3] => is
    [4] => peter
    [5] => string
    [6] =>      splitter
)

다음과 같은 정규 표현식을 사용할 때 :

preg_split('/\s+/', $sentence);

다음 (원하는) 출력을 제공했습니다.

Array
(
    [0] => Hello
    [1] => my
    [2] => name
    [3] => is
    [4] => peter
    [5] => string
    [6] => splitter
)

누군가가 비슷한 장애물에 갇히고 그 이유에 대해 혼란스러워하는 데 도움이되기를 바랍니다.

질문이지만 JSON을 데이터에서 제외 시키려고합니까? 그렇다면 다음과 같은 것을 고려할 수 있습니다.

return json_encode(explode(' ', $inputString));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top