2013-08-10 1 views
1

PHP 스크립트가 Freebase API를 호출하고 단락을 출력 한 다음 약간의 정규식 및 기타 구문 분석 마법을 수행하고 데이터를 변수 $paragraph으로 반환합니다. 단락은 여러 문장으로 구성됩니다. 내가 원하는 것은 단락의 짧은 버전을 반환하는 것입니다.PHP 표시 문장 최대 100 자

첫 번째 문장을 표시하고 싶습니다. 100 자 미만인 경우 최소 100 자까지 다음 문장을 표시하고 싶습니다.

어떻게하면됩니까?

+0

을 할 수있는 빠른 방법 및 대부분의 경우에 효과가있을 것입니다. 첫 번째 100자를 가져 와서 마침표를 찾을 때까지 감소합니다. –

+1

@VaughanHilts 최대 문장을 총 100 자 이하로 반환합니다. OP는 ** ** 적어도 100을 요구하고 있습니다. – jcsanyi

+0

길이가 100 인 부분 문자열을 잡고 마침표가 있는지 확인하십시오. 그렇지 않다면 99를 잡으십시오. 마지막 마침표로 마침표? 그렇지 않다면 다시 시도하십시오. 기간이 나타날 때까지 계속 감소시킵니다. –

답변

2

정규 표현식이 필요하지 않습니다. strpos()을 99 오프셋으로 사용하여 첫 번째 마침표를 위치 100- 또는 그 이후에 찾아서 substr()까지 가져 와서 그 길이까지 가져올 수 있습니다.

$shortPara = substr($paragraph, 0, strpos($paragraph, '.', 99) + 1); 
당신은 아마 원래 단락 미만 100 자, 또는 마침표로 끝나지 않는 경우에는 추가 점검의 비트를 추가 할

:

// find first period at character 100 or greater 
$breakAt = strpos($paragraph, '.', 99); 
if ($breakAt === false) { 
    // no period at or after character 100 - use the whole paragraph 
    $shortPara = $paragraph; 
} else { 
    // take up to and including the period that we found 
    $shortPara = substr($paragraph, 0, $breakAt + 1); 
}