【发布时间】:2011-11-23 09:59:47
【问题描述】:
如何在 HTML dom 中使用substr()?我想保留所有的 html 标签并缩短文本。
$str = '<div><a href="http://www.weather.com">Today is a nice day</a></div>';
$part1 = preg_replace("/<a(.*?)>(.*?)<\/a>/i",substr('\\2', 0,10),$str).'...';
$part2 = preg_replace("/<a(.*?)>(.*?)<\/a>/i",'\\2',$str);
echo str_replace($part2,$part1,$str);// nothing change
// I need <div><a href="http://www.weather.com">Today is a...</a></div>
【问题讨论】:
-
@Yoshi: 不是真的重复
-
@rabudde 怎么不是重复的?它处理截断文本节点而不破坏 html 结构?
-
它应该把
substr放在preg_replace之后。$str = '<div><a href="http://www.weather.com">Today is a nice day</a></div>'; $part1 = preg_replace("/<a(.*?)>(.*?)<\/a>/i",'${2}',$str); $part1 = substr($part1, 0,10).'...'; $part2 = preg_replace("/<a(.*?)>(.*?)<\/a>/i",'${2}',$str); echo str_replace($part2,$part1,$str); -
@Yoshi:他想截断所有节点中的文本,“重复”希望在截断特定数量的字符后只纠正损坏的 HTML 语法。