2012-02-04 4 views
1

나는 에세이가 있는데 내가하려는 것은 모든 문장을 내 데이터베이스에 저장하는 것이다. 그래서 나는 으로 텍스트를 폭발시킵니다. ! ? 자입니다. 그러나 내가 이것을 할 때 나는이 문자들을 잃어 버린다. 폭발하는 문자를 잃지 않고 문자열을 어떻게 폭발시킬 수 있습니까?절약 폭발 문자

+2

대신 preg_split을 시도하십시오. – ngen

+0

한 번에 모든 것을 저장하지 않거나 단락별로 분할하지 않을 이유가 있습니까? (예 :'explode (PHP_EOL, $ essay);') – mrlee

+0

이것은 신뢰할 수 없게 될 것입니다. (<--- 11 문장) –

답변

4

PREG_SPLIT_DELIM_CAPTURE 플래그가 설정된 PHP의 preg_split 함수를 사용할 수 있습니다.

이렇게하면 문장과 구분 기호를 포함하는 배열을 얻을 수 있지만 별도의 배열 요소가 있습니다.

<?php 
$string="Hello World. Test! Example 123? 456!"; 
$parts = preg_split("#([!.?])#", $string, -1, PREG_SPLIT_DELIM_CAPTURE); 

var_dump($parts); 
?> 

는 ... 다음을 반환합니다

array(9) { [0]=> string(11) "Hello World" [1]=> string(1) "." [2]=> string(5) " Test" [3]=> string(1) "!" [4]=> string(12) " Example 123" [5]=> string(1) "?" [6]=> string(4) " 456" [7]=> string(1) "!" [8]=> string(0) "" } 
1

그냥 플래그 PREG_SPLIT_DELIM_CAPTURE와 preg_split를 사용

$sentences = preg_split(
    '/([\?\.\!)/', 
    $input, 
    -1, 
    PREG_SPLIT_DELIM_CAPTURE 
); 

결과 배열 $ 문장 것이다 배열 (로 실행. .., ...)