获取 php 中的前 2 个句子

Get first 2 sentences in php

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

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

  return htmlspecialchars($custom_desc);
}

关于如何同时检查问号 and/or 感叹号的任何想法?

尝试使用此代码:

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

    return htmlspecialchars($custom_desc);
}

首先替换所有 ?和 !带句号 (.) 。然后使用您常用的代码 使用

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

然后用你的代码用 (.)展开

function createCustomDescription($string) 
{

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

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

}

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

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

    return htmlspecialchars($custom_desc);
}