1

我的 PHP 脚本调用 Freebase API 并输出一个段落,然后我在上面做一些正则表达式和其他解析魔法,并将数据返回给变量$paragraph。段落由多个句子组成。我想要做的是返回该段落的较短版本。

我想显示第一句话。如果它少于 100 个字符,那么我想显示下一个句子,直到它至少有 100 个字符。

我怎样才能做到这一点?

4

1 回答 1

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);
}
于 2013-08-10T19:08:48.080 回答