разбить предложения в каждом абзаце и обернуть в промежуток

1

Я использую это, чтобы разделить статьи на отдельные предложения, чтобы я мог выделить каждое предложение при наведении мыши:

$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;

Моя проблема заключается в том, что в конце каждого абзаца существует двойной период. Он будет выглядеть примерно так:

Приговор один. Предложение два. Предложение три. ,

Ничто из этого не удаляет это конечное пространство + период с конца каждого абзаца, и я не могу понять, как он применяется.

  • 0
    Ты сдался или как?
Теги:

2 ответа

0

Последнее предложение в абзаце, вероятно, не имеет места после периода, поэтому оно сохраняется, и вы добавляете еще один в промежутке.

Попробуйте обрезать последний период в абзаце, заменив:

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

С:

$p_text = explode('. ', trim($p, '.'));
-1
$highlight_text = trim($highlight_text, ' .');
echo $highlight_text;
  • 0
    Я тоже попробовал это с str_replace. Ни один не оказывает влияние.
  • 0
    Может ли быть так, что у него есть конечный пробел (который вы не видите), поэтому нет совпадения с: '.' ?? В этом случае это будет работать: $ highlight_text = trim (trim ($ highlight_text), '.');
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню