【发布时间】:2016-05-06 23:45:49
【问题描述】:
长文本包含一些 html 标签(br、img 等)
此文本需要一个最多 400 个字符的预告片,并注意单词和 html 标记但 br 标记应替换为空格,以删除预告片中的换行符。看起来更好!
预告片后面的文本必须是减去预告片的文本,但要包含所有 html 标记和图像 br
Example text:
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. <img alt="image" src="/image.jpg"> At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
<br /><br />
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. <img alt="image" src="/image.jpg"> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
<br /><br />
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, <img alt="image" src="/image.jpg"> vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet.
我尝试了什么:
$content = $junk_of_lorem;
function teaser($string){
$string = substr($string,0,500);
$string = substr($string,0,strrpos($string," "))
$replacements = array(
'|<br /><br />|' => ' '
);
$patterns = array_keys($replacements);
$replacements = array_values($replacements);
$string = preg_replace($patterns, $replacements, $string);
return $string;
}
$teaser = teaser($content);
现在我尝试从文本中删除 $teaser 以获取没有预告片的文本
$mainpart = str_replace(teaser($content), "", $content);
问题:
使用这个虚拟解决方案时,我遇到了问题,因为预告片仅带有 br,但主要部分具有所有 html 标签。当 char 490 周围有图像时,主要部分包含 img 标签的一半。
strip_tags with allow for br to the $teaser 工作,但我无法从 $mainpart 中删除完全匹配。
我很确定有更好的解决方案。对不起我的英语错误,请不要投票给我。我尽力解释了。
非常感谢您抽出宝贵时间帮助我。
【问题讨论】:
-
对于预告片,在 substr php.net/manual/fr/function.strip-tags.php 之前使用 strip_tags
-
但是当预告片不再有 html 标签但主要部分应该时,我无法从正文中替换预告片部分,因为不匹配。
-
这是我发现的关于截断文本和 HTML 的内容:pjgalbraith.com/truncating-text-html-with-php
-
你解释得很好。让我看看我能为你想出什么。
标签: php preg-replace substr strpos