在每个段落中拆分句子并包含在范围内

时间:2015-11-04 17:28:09

标签: php

我使用它将文章分成单个句子,这样我就可以在鼠标悬停时突出显示每个句子:

$a_text = str_replace('<p>', '', $a_text);
$a_text = explode('</p>', $a_text); // Separate into paragraphs
foreach($a_text as $p) {
    $p_text = explode('. ', $p); // Only spilt on periods followed by a space to preserve URLs in the article.
    $highlight_text .= '<p>';
    $i = 1;
    foreach($p_text as $text) {
        $highlight_text .= '<span class="highlight" alt="'.$i.'">'.$text.'.</span> '; // Wrap each sentence in the highlight class
        $i++;
    }
    $highlight_text .= '</p>';
}
echo $highlight_text;

我的问题是,在每个段落的末尾,有一个双重时期。它看起来像这样:

  

一句话。句子二。判刑三。

我没有做任何事情从每个段落的末尾删除尾随空格+句号,我无法弄清楚它是如何应用的。

2 个答案:

答案 0 :(得分:0)

段落中的最后一句话可能在句号之后没有空格,因此它会被保留,并且您在跨度中添加另一个句子。

尝试通过替换:

来修剪段落中的最后一个句点
$p_text = explode('. ', $p);

使用:

$p_text = explode('. ', trim($p, '.'));

答案 1 :(得分:-1)

$highlight_text = trim($highlight_text, ' .');
echo $highlight_text;