PHP ingeligent修剪字符串

时间:2013-04-09 10:12:29

标签: php string

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

预告: Lorem ipsum dolor坐下来,精致的adipistur elit。 Maecenas enim est,convallis non ullamcorper hendrerit,vehicula ac quam。在malesuada suscipit eleifend。 休息: Donec posuere ipsum在ipsum feugiat eu ornare nunc ultricies。 Donec eleifend odio eros semper cursus。 Donec posuere ipsum在ipsum feugiat eu ornare nunc ultricies。 Donec eleifend odio 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就是这样),这很好。但是这个场景中的其余部分以随机字母开头,这不是我想要的。我担心有人会在句子中间使用点,这会引起另一个问题。有什么想法吗?

1 个答案:

答案 0 :(得分: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()计算的与substr()一起使用的位置


唯一的问题是你不能使用多个针,我的意思是同时搜索“...”,还有另一个关于SO的帖子可以帮助你解决这个问题并将它与我的回答:

strpos() with multiple needles?