문장으로 단락을 폭발. 그러나 이것은 다른 문장 부호로 끝난 문장을 포함하지 않습니다! ? :;
단일 문자 대신 배열을 구분 기호로 사용하는 방법이 있습니까? 다른 구두점을 사용하여 분할하는 또 다른 깔끔한 방법이 있습니다.
나는 희망
explode(("." || "?" || "!"),$mystring)
을 시도했지만 작동하지 않았다 ...
문장으로 단락을 폭발. 그러나 이것은 다른 문장 부호로 끝난 문장을 포함하지 않습니다! ? :;
단일 문자 대신 배열을 구분 기호로 사용하는 방법이 있습니까? 다른 구두점을 사용하여 분할하는 또 다른 깔끔한 방법이 있습니다.
나는 희망
explode(("." || "?" || "!"),$mystring)
을 시도했지만 작동하지 않았다 ...
당신은 할 수 있습니다 :
preg_split('/\.|\?|!/',$mystring);
또는 (더 간단하게) :
preg_split('/[.?!]/',$mystring);
이 방법은 최종 문자열에서 전체 중지 등을 제거합니다. – 472084
사용 preg_split하고 그것을 같은 정규 표현식을 제공 [\ |. \!]에 분할
$mylist = preg_split("/[\.|\?!:;]/", $mystring);
폭발 할 때 여러 개의 구분 기호를 사용할 수 없습니다. 그것이 preg_split();
을위한 것입니다. 그러나 그때조차도 구분 기호에서 폭발하므로 구두점없이 문장을 반환하게됩니다. 당신은 반환 된 배열에 문장과 다음 punctation 마크를 내파 일부 루프를 실행은 다음 PREG_SPLIT_DELIM_CAPTURE와 자신의 요소를 반환하고있는 멀리 단계와 플래그를 preg_split 취하거나 사용할 수 있습니다 preg_match_all();
:
preg_match_all('~.*?[?.!]~s', $string, $sentences);
preg_split('/\s+|[.?!]/',$string);
이메일 주소가 중간에 새 줄로 나눌 수 있기 때문에 가능한 문제 일 수 있습니다. 당신이 실제로 최종 결과와 구두점 표시를 원하는 가정
, 당신은 시도가 :
$mystring = str_replace("?","?---",str_replace(".",".---",str_replace("!","!---",$mystring)));
$tmp = explode("---",$mystring);
재치에 문장 부호를 떠날 것이다.
당신은
$sentences = preg_split("/[\.\?\!,;]+/", $mystring);
preg_split
가 구두점을 제거합니다이 유의하시기 바랍니다 시도 할 수 있습니다. 당신이 선행 또는 당신은 각 occurance 후 문자열을 분할하는 PCRE lookahead condition과 함께 preg_split()
을 사용할 수 있습니다뿐만 아니라
$sentences = preg_split("/[\.\?\!,;]+\s+?/", $mystring);
을 후행 공백 밖으로 제거하려는 경우 .
, ;
, :
, ?
, !
..그대로 실제 문장 부호를 유지하면서 :
코드 :
$subject = 'abc sdfs. def ghi; this is [email protected]! asdasdasd? abc xyz';
// split on whitespace between sentences preceded by a punctuation mark
$result = preg_split('/(?<=[.?!;:])\s+/', $subject, -1, PREG_SPLIT_NO_EMPTY);
print_r($result);
결과 : 패턴과 일치하고 변수에 값을 저장하는
Array
(
[0] => abc sdfs.
[1] => def ghi;
[2] => this is [email protected]!
[3] => asdasdasd?
[4] => abc xyz
)
사용 정규 표현식, – sree
폭발하는 매개 변수로 그 변수를 전달 http://stackoverflow.com/questions/5032210/php-entent-boundaries-detection – Boby