使用php从字符串中获取第一句话

时间:2014-06-04 13:09:16

标签: php string

我有一些内容存储在变量中,它看起来像"

$content = "This is a test content and the content of the url is http://www.test.com. The is a second sentence.";

现在我的代码是

$pos = strpos($content, '.');
$firstsentence = substr($content, 0, $pos);

上面的代码不起作用,因为字符串已经包含一个带点的网址。

如果考虑到字符串包含超链接的事实,我如何得到第一句话?

2 个答案:

答案 0 :(得分:1)

请分享其他文字方案。这适用于您的示例:

$sentences = 'This is a test content and the content of the url is http://www.test.com. The is a second sentence.';

preg_match('/(http|https):(.*?)com/', $sentences, $match);

$sentences = preg_replace('/(http|https):(.*?)com/', '', $sentences);

$pos = strpos($sentences, '.');
$pos .= -1;

$firstsentence = substr($sentences, 0, $pos) .$match[0].'.';
//This is a test content and the content of the url is http://www.test.com.

答案 1 :(得分:-1)

一般情况下,我认为您还必须查找<sentence-end-punct>"<whitespace>"<sentence-end-punct><whitespace><sentence-end-punct><whitespace>(其中&lt; whitespace&gt;包含行尾)。这是非常通用的英文文本,不是特别在你的控制之下,还是语法非常有限?对于非英文文本,可以有其他规则,例如在标点符号和引号之间放置空格。

补充:你想在这里完成什么?你真的需要将文本分成单个句子,还是只是想创建一个“预告片”。在后一种情况下,只需在一些字符前用完整的单词剪切文本,然后添加省略号(...)。