1

我正在尝试以非常非标准的方式修剪字符串。文本分为两部分 - 可见的预告片和隐藏的其余部分,在单击链接后由 JS 显示。我需要这样的想法:我的文字:

预告片: Lorem ipsum dolor sit amet,consectetur adipiscing elit。Maecenas enim est, convallis non ullamcorper hendrerit, vehicula ac quam。在malesuada suscipit eleifend。 休息: 在 ipsum feugiat eu ornare nunc ultricies 的 Donec posuere ipsum。Donec eleifend odio a eros semper cursus。Donec posuere ipsum 在 ipsum feugiat eu ornare nunc ultricies。Donec eleifend odio a eros semper cursus。

我的问题是因为所有文本都存储在数据库的单个字段中。需要在 dwo 点或 100 个字符后修剪预告片,然后显示文本的其余部分(不丢失任何字符)。“其余”部分必须以新句子和大字母开头,如上例所示。

如果我在文本上使用 substr ,其余的将以随机字母开头......

$text = '';
$text = strip_tags($row['text']);
$text = explode('.', $text);
$teaser = $text[0].$text[1].'.';
$cut = strlen($teaser);
if($cut > 100) 
{
    $teaser = trimString($text, 0, 100);
    $cut = 100;
}
$theRest = substr($row['text'], $cut);

有了这个,我有以“。”结尾的预告片。或“...”(我的函数 trimString 就是这样工作的),这很好。但在这种情况下,其余部分以随机字母开头,这不是我想要的。恐怕有人会在句子中间使用点,这会导致另一个问题。有任何想法吗?

4

1 回答 1

0
$string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas enim est, convallis non ullamcorper hendrerit, vehicula ac quam. In malesuada suscipit eleifend. Donec posuere ipsum at ipsum feugiat eu ornare nunc ultricies. Donec eleifend odio a eros semper cursus. Donec posuere ipsum at ipsum feugiat eu ornare nunc ultricies. Donec eleifend odio a eros semper cursus.';

$cut = strpos($string, '. ', 100)+1;
$teaser = substr($string, 0, $cut);
$rest = substr($string, $cut);

解释:用于strpos()搜索'的第一次出现的位置。' (作为新句子的开始)。

我使用偏移量参数(100)从位置 100 开始搜索。在偏移量中添加了 +1,因此它显示了点。

所以 $new_cut 是strpos()使用 with计算的位置substr()


唯一的问题是您不能使用多个针头,我的意思是同时搜索“...”,关于 SO 的另一篇文章可能会帮助您解决此问题并将其与我的答案相结合:

strpos() 多针?

于 2013-04-09T10:41:18.440 回答