2011-01-04 4 views
0
$content = 'this is a small text'; 
$content = preg_replace('/\s+?(\S+)?$/', '', substr($content, 0, 100)); // i substract the first 100 chars from the text - only whole words 
echo $content; 

텍스트의 첫 번째 문장을 빼고 반향하는 방법이 있습니까? 텍스트 reachers까지 말할 수 있습니다. " 또는 "?" 또는 "!" ?텍스트의 Substract 첫 번째 문장을 반향 출력 한 다음 나머지 텍스트를 반향

그런 다음 텍스트의 나머지 부분을 반향합니까?

은 첫 번째 그룹 ([^.]+)이 하나 이상의 문자가이 점은 다음 0 개 이상의 공백 \.\s*

나머지는 다음에 예상하는 점 그리고 .

없는 일치

답변

1

(. *? [?!!])과 같은 패턴이 첫 번째 문장과 일치합니다.

$content = "First sentence. Then. Many. More."; 
preg_match('/(.*?[?.!])(.*)/', $content, $match); 

$first_sentence = $match[1]; 
$the_rest = $match[2]; 

하지만 이렇게하면됩니다.

$content = "First sentence? Then. Many. More."; 
+0

첫 번째 문장이 "..."으로 끝나면 어떨까요? 아니면 텍스트가 실제로 작아서 다음과 같이 말할 수 있습니다. "이것은 텍스트의 유일한 sentente이고 어떤 문장으로 끝나지 않았습니다. 구두점 "감사합니다 – webmasters

+0

당신은 단지 물어보십시오. ? ! 줄임표가 아님 '/(.*?([[.!]|[.]{3}))(.*)/'은 줄임표로 작동합니다. $ match [2]는 pontuaction 심볼을 포함합니다. – VGE

0
$content = "First sentence. Then. Many. More."; 
preg_match('/^([^.]+)\.\s*(.*)$/', $content, $match); 

$first_sentence = $match[1]; 
$the_rest = $match[2]; 

주셔서 감사합니다 $content의 끝까지 : (.*)$

1

대신 strtok을 사용할 수 있습니다.

$content = 'This is a small text. With a second Sentance.'; 
$first = strtok($content, '.?!'); 
$rest = substr($content, 0, strlen($first)); 

토큰을 광고하기가 쉽습니다.

+0

내가 "..."정지 지점을 추가하고 싶다면 호출 된 것으로 생각하십니까? – webmasters

관련 문제