用2句话PHP剪切文字

时间:2013-12-07 23:37:23

标签: php

我有一长串文字。我想将它存储在一个数组中,每个元素包含2个句子。我认为应该通过在点+空间周围爆炸文本来完成;然而,有像'先生'这样的元素我不知道如何从爆炸功能中排除。

我也不知道如何调整它以用2个句子而不是1来分解文本。

2 个答案:

答案 0 :(得分:0)

可能是这样的:

$min_sentence_length = 100;

$ignore_words = array('mr.','ms.');

$text = "some texing alsie urj skdkd. and siks ekka lls. lorem ipsum some.";

$parts = explode(" ", $text);

$sentences = array();

$cur_sentence = "";

foreach($parts as $part) {

  // Check sentence min length and is there period 
  if (strlen($cur_sentence) > $min_sentence_length && 
    substr($part,-1) == "." && !in_array($part, $ignore_words)) {

    $sentences[] = $cur_sentence;
    $cur_sentence = "";
  }

  $cur_sentence .= $part . " ";   
}

if (strlen($cur_sentence) > 0)
  $sentences[] = $cur_sentence;

答案 1 :(得分:0)

对您的问题的评论链接到使用preg_split()而不是explode()的答案,以提供有关如何以及何时分割输入的更准确描述。这可能对你有用。另一种方法是将每次出现". "时的输入拆分为临时数组,然后循环遍历该数组,然后根据需要将其拼接回来。 e.g。

$tempArray = explode('. ', $input);

$outputArray = array();
$outputElement = '';
$sentenceCount = 0;

foreach($tempArray as $part){
  $outputElement .= $part . '. ';

  //put other exceptions here, not just "Mr."
  if ($part != 'Mr'){
    $sentenceCount++;
  }

  if ($senteceCount == 2){
    $outputArray[] = $outputElement;
    $outputElement = '';
    $sentenceCount = 0;
  }
}