【问题标题】:Get first 2 sentences in php在php中获取前2个句子
【发布时间】:2016-06-24 02:09:31
【问题描述】:

我们有这段代码可以抓取段落的前两句,除了只计算句点之外,它运行良好。即使有感叹号或问号,它也需要获取前两个句子。这是我们目前使用的:

function createCustomDescription($string) {
  $strArray = explode('.',$string);
  $custom_desc = $strArray[0].'.';
  $custom_desc .= $strArray[1].'.';

  return htmlspecialchars($custom_desc);
}

知道如何检查问号和/或感叹号吗?

【问题讨论】:

标签: php explode preg-split


【解决方案1】:

您可以通过 PREG_SPLIT_DELIM_CAPTURE 选项将preg_split 与正则表达式一起用于您想要的结尾,这将保持使用的标点符号。

function createCustomDescription($string) {
    $split = preg_split('/(\.|\!|\?)/', $string, 3, PREG_SPLIT_DELIM_CAPTURE);
    $custom_desc = implode('', array_slice($split, 0, 4));

    return htmlspecialchars($custom_desc);
}

【讨论】:

  • 这非常有效!保留标点符号正是我们想要的。谢谢!!
  • 太棒了!看到 MajicBob 对我的代码进行了刻痕。很高兴它解决了。
【解决方案2】:
function createCustomDescription($string) 
{

  $strArray  = preg_split('/(\.|\!|\?)/', $string, 3, PREG_SPLIT_DELIM_CAPTURE);      
  $strArray  = array_slice($strArray, 0, 4);

  return htmlspecialchars(implode('', $strArray));

}

【讨论】:

    【解决方案3】:

    先全部替换?和 !用句号 (.) 。然后使用你常用的代码 使用

    str_replace("?",".",$paragraph);
    str_replace("!",".",$paragraph);
    

    然后用你的代码用 (.) 爆炸

    【讨论】:

      【解决方案4】:

      尝试使用此代码:

      function createCustomDescription($string) {
          $strArray = preg_split( '/(\.|!|\?)/', $string);
          $custom_desc = $strArray[0].'.';
          $custom_desc .= $strArray[1].'.';
      
          return htmlspecialchars($custom_desc);
      }
      

      【讨论】:

      • 这是一个很好的解决方案来定位前 2 段的结尾并用句号替换标点符号,但是,我们真的想保留 @MajicBob 提出的现有标点符号。我意识到我没有在原始帖子中提到这一点,但感谢您的帮助!
      猜你喜欢
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      相关资源
      最近更新 更多