中⽂超过⼀定长度替换php,PHP正则匹配标签内容,根据字符
串长度进⾏替换
写了⼀个函数
/**
* @param string $html html⽂本数据
* @param array $rule 处理的规则, [ '需要处理的标签' => 限制的字符数量 ]
*
*/
function processing($html, $rule){
$outHtml = "";
$pattern = '/]+)>(.*)]+)>/U'; // 0为带标签的数据 1前标签 2为不带标签的⽂本内容 3后标签
preg_match_all($pattern, $html, $data);
foreach($data[3] as $k => $v){
if(ist($rule[$v])){
$len = mb_strlen($data[2][$k], 'utf8');
金边是哪里if($len > $rule[$v]){
$start = 0;
$end = $len;
do{
$subText = mb_substr($data[2][$k], $start, $rule[$v], 'UTF-8');
$outHtml .= "{$subText}{$data[3][$k]}>";秋至
$len -= $rule[$v];
$start += $rule[$v];折纸教程
if($len<0) {
$len = 0;
$start = $end;
}
光棍证}while($len);
continue;
}
食品配送}
$outHtml .= $data[0][$k];
}
冲浪板
return $outHtml;
}
感恩的语句
使⽤
$html = '
是的范德萨第三⽅第三⽅⽔电费送达发送发斯蒂芬送达送达
这是H1更好地规划获得更好地⽅获得更好
⽔电费第三⽅都是范德萨范德萨范德萨⽔电费阿道夫告诉对⽅⽔电费电风扇分费第三⽅都是范德萨范德萨范德萨⽔电费阿道夫告诉对⽅⽔电费电风扇分费第三⽅都是范德萨范德萨范德萨⽔电费阿道夫告诉对⽅⽔电费电风扇分
这是⼀段测试,此处是需要处理的⼀段标题数据!字符超过指定字数会对这段进⾏处理,数据数据数据数据数据数据
这是⼀另段测试,这⾥是H2的数据,数据
编织物
奋⽃过⽔电费是第三个是是个地⽅官
';
$out = processing($html, ['h1' => 20, 'h2' => 10]);
var_dump($out);
规则中符合规定的h1、h2会进⾏替换,变成带相同标签的多⾏,并且带了标签的class等属性。这样就可以随意设置要替换的标签和长度了。
不⽤带的话会更好处理,改⼀改do中间那⼀段就⾏。