문장을 단어 배열로 어떻게 변환 할 수 있습니까?
문제
이 문자열에서 :
$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));
제휴하지 않습니다 StackOverflow